SSH 두 번 로그인 스크립트

SSH 두 번 로그인 스크립트

스크립트를 사용하여 두 번 로그인해야 하는데 ssh작동하지 않습니다. 내 스크립트 파일에 있는 내용은 다음과 같습니다.

#!/usr/bin/expect

set login "user"
set addr "address1"
set addr2 "address2"
set pw "password"

spawn ssh $login@$addr
expect "$login@$addr\'s password:"
send "$pw\r"
expect "$login@host:"
spawn ssh $addr2
expect "$login@$addr\'s password:"
send "$pw\r"
interact

그러나 이것은 오류로 인해 실패합니다.

user@host:~$ ssh: Could not resolve hostname address2: Name or service not known
send: spawn id exp7 not open
    while executing
"send "$pw\r""

줄을 변경하면 오류와 함께 실패합니다 spawn ssh $addr2.exec ssh $addr2

user@host:~$ ssh: Could not resolve hostname address2: Name or service not known
    while executing
"exec ssh $addr2"

이 작업을 수행하려면 무엇을 변경해야 합니까?

답변1

이 문제에 대한 해결책을 찾은 후 내 답변을 게시했습니다. 실제로 작동하는 스크립트는 다음과 같습니다.

#!/usr/bin/expect

set login "user"
set addr "address1"
set addr2 "address2"
set pw "password"

spawn ssh $login@$addr
expect "$login@$addr\'s password:"
send "$pw\r"
expect "$login@host:"
send "ssh $addr2\r"
expect "$login@$addr\'s password:"
send "$pw\r"
interact

spawn ssh $addr2그래서 기본적으로 줄을 send "ssh $addr2\r". 처음 SSH를 연결한 호스트에서 다른 SSH를 시작하는 대신 시작한 곳에서 다른 SSH를 생성하려고 합니다.

답변2

ssh제공한 호스트 이름을 확인할 수 없어 오류가 발생했습니다. 그런 다음 Expect에 비밀번호를 보내라고 지시하지만 ssh에서 오류가 발생하고 종료되므로 보낼 내용이 없습니다. 따라서 제공한 호스트 이름을 확인할 수 없으므로 확인해야 합니다. 또는 IP 주소로 전환할 수 있습니다. 하지만 "address2"가 누구인지 알 수 없는 이유를 알아내는 것이 더 나을 것입니다.

답변3

SSL 키 생성을 찾습니다. 키 쌍(공개 및 개인)을 생성하고 생성된 개인 키를 시스템에 보관하며 SSH 액세스가 필요한 시스템에 공개 키를 배치합니다. 그러면 ssh는 비밀번호를 묻는 메시지를 표시하지 않으며 이를 기대할 필요도 없습니다.

이것은 다른 시스템에 대해 다른 키 쌍을 생성할 수 있도록 키를 생성하는 데 사용하는 "sskkeygen.sh" 스크립트입니다.

#!/bin/bash
SYSTEM=${1:-boogie}
COMMENT=${2:-"Key for $SYSTEM work"}
ssh-keygen -t dsa -f ~/.ssh/id_dsa.$SYSTEM -C "$COMMENT"
chmod 600 ~/.ssh/id_dsa.$SYSTEM
chmod 600 ~/.ssh/id_dsa.$SYSTEM.pub

~/.ssh/id_dsa.$SYSTEM.pub 키를 원격 시스템에 복사합니다. 주의하세요. 지침에는 모두 키 파일을 복사하라고 나와 있는데, 여러분은 그것을 첨부하고 싶습니다!

그런 다음 어떤 호스트가 어떤 키를 사용하는지 알려주려면 ~/.ssh/config 파일이 필요합니다.

#key: prod
Host 1.2.3.4
  IdentityFile ~/.ssh/id_dsa.prod
  User meself

#key: dev/test
Host 2.3.1.4
  IdentityFile ~/.ssh/id_dsa.dev
  User meself

#key: ftp dropbox
Host dropbox.company.com
  IdentityFile ~/.ssh/id_dsa.dropbox
  User virtualuser

#key: ftp thing
Host aaa.bbb.thing.com
  IdentityFile ~/.ssh/id_dsa.think
  User neato

#key: work
Host *.work.com
  IdentityFile ~/.ssh/id_dsa.work
  User workid

관련 정보