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 $addr2send "ssh $addr2\r". 처음 SSH를 시작한 호스트에서 다른 SSH를 시작하는 대신 시작한 곳에서 다른 SSH를 생성하려고 했습니다.

답변2

ssh은(는) 귀하가 제공한 호스트 이름을 확인할 수 없어 오류가 발생합니다. 그런 다음 비밀번호를 보낼 것으로 예상하지만 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

관련 정보