29. december 2004 - 09:38Der er
4 kommentarer og 1 løsning
ssh timeout
hej! jeg er ved at lave et script der skal logge på rigtig manage servere og eksekvere et script på hvert enkelt af dem. De fleste af vores servere er configureret med PermitRootLogin without-password i sshd_config så de er trusted fra en enkel maskine hvor det kun er administratorere der har adgang. problemet er at nogle gamle maskiner ikke har ssh konfigureret på den måde og heller ikke skal have det og så bliver der promtet for passwd.
eks.
for i in `cat hosts` ; do if ssh -t $i "exit"; then ssh -t $i "runback.job" fi done
Dette virker faktisk også fint nok, men nogle af serverne promter med root passwd. #root@password
Kan jeg ikke i mit script lave et test på at ssh er trusted på en given maskine eller sætte en timeout så mit script ikke går i stå i loopet og i stedet f.eks skriver ud i en log at $i maskine ikke er trusted og derfor kan der ikke logges på.
jeg har kigget i man til ssh og på google men har ikke rigtig kunnet finde noget.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Jeg forstår ikke dit problem. Er du træt af at dit script går i stå indtil SSH timer ud ? Kan du ikke bare udelade de gamle maskiner fra din "hosts" fil ?
Da der er ca 400 unix servere i hostsfilen #Det er ikke /etc/hosts men en fil indeholdende alle vores unix servere i netværket vil jeg meget gerne have hvis jeg kunne teste automatisk. hvis jeg som root logger ind på maskine A og skriver ssh B logger den automatisk ind som root fordi PermitRootLogin without-password er sat i B's /opt/ssh/etc/sshd_config fil og B er sat i kmown_host filen på A.
Nu er det bare sådan at nogle af de 400 maskiner ikke er konfiguret på samme måde og d.v.s at når mit script kører og det kommer til en maskine som den ikke kan komme på som root så promter den for et root passwd. og der står den står indtil jeg laver ctr +c eller klikker enter og denlogger ud med forkert password. Kan man ikke i ssh sæte en eller anden option der tester for om der er adgang og bare lugger ssh ned igen hvis ikke. eller alternativt at man sætter et timeout på 5-10 sek hvorefter den automatisk lukker ssh processen ned og forsætter scriptet.
Men du ved vel hvilke maskiner der er problematiske, ikke ? Men fred være med det. Hvad med om du testede returværdien fra din ssh-process ( $? ). Evt . kombineret med en "sleep 5". Hvis du ikke har en returværdi på 0 efter 5 sekunder, så kill ssh.
Men det virker meget usikkert at tillade root login uden passwd. Var det ikke noget at bruge PKE istedet ? Du ved med "ssh-keygen -t dsa" på din workstation og så kopiere indholdet af din ~/.ssh/id_dsa.pub ind i root's ~/.ssh/authorized_keys. Så kan du også logge på som root uden kodeord, men kun fra din workstation hvor du har din private DSA nøgle.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.