한 원격 컴퓨터에서 네트워크 내의 여러 원격 컴퓨터에 연결하고 있습니다. 사용자 이름과 비밀번호는 모든 원격 컴퓨터에서 동일합니다. 내 사용자 이름과 패스를 사용하여 컴퓨터에 로그인하는 스크립트를 작성하고 싶습니다. 호스트에 도구(expect 또는 sshpass)를 설치할 수 없습니다. 동일한 시스템에 두 번 이상 연결하는 경우가 거의 없기 때문에 공개 키를 대상 원격 시스템에 복사할 필요가 없습니다. 매일 새로운 기계가 있습니다.
대상 컴퓨터에서 SSH를 설정하지 않고도 원격 컴퓨터에 연결할 수 있도록 호스트 컴퓨터에서 SSH를 설정할 수 있습니까?
나머지 네트워크에 연결하는 데 사용하는 로컬 컴퓨터 -수세 리눅스 엔터프라이즈 서버 11 SP3
답변1
expect
로컬 컴퓨터에 설치하고 이를 사용하여 새 명령을 추가해야 한다는 요구 사항을 고려합니다. 원격 호스트 one
와 many1
로컬 many2
컴퓨터를 호출해 보겠습니다 mybox
. 이와 같은 것 (테스트되지 않음)
#!/usr/bin/expect
# connect to "one"
spawn ssh username@one
# next lines shouldn't be needed, should have shared keys for "one"
expect "assword: "
# provide password for "one", ending with "\r"
send -- "the_password_for_username@one\r"
# mainloop
interact "~p" {
send "ssh manyuser@[lindex $argv 0]\r"
expect "yes/no)? " { send "yes\r" exp_continue } "assword: "
send "the_password_for_many\r"
}
mybox
다음과 같이 실행하면 ./script many1
다음으로 연결됩니다.one
그런 다음 연결하려면 ssh 명령을 실행하고 "연결하시겠습니까?"라는 질문에 대답하고 비밀번호를 입력하기만 하면 됩니다 many1
.~p
물론 스크립트에 비밀번호를 저장하는 것이 안전하지 않다는 표준 설명도 적용됩니다. 또 다른 작은 단점은 이를 위해 키 시퀀스를 지정해야 한다는 것입니다. 저는 여기를 사용하고 있는데 ~p
, 기능키를 사용하시면 됩니다.