스크립트에 언급된 비밀번호를 사용하여 SSH 서버에 자동으로 로그인할 수 있는 쉘 스크립트를 작성하려고 합니다. 나는 다음 코드를 작성했습니다.
set timeout 30
/usr/bin/ssh -p 8484 [email protected]
expect
{
"[email protected]'s password"
{
send "password\r"
}
}
코드가 제대로 작동하지 않고 여전히 비밀번호를 묻습니다. 누구든지 이 문제를 해결하도록 도와줄 수 있나요?
답변1
expect
귀하의 경우처럼 SSH 서버에 로그인하기 위한 스크립트를 작성한 적이 있는데 , 제 스크립트는 다음과 같습니다:
#!/usr/bin/expect
spawn ssh [email protected]
expect "password"
send "MyPassword\r"
interact
내 생각에는 interact
이것이 스크립트에서 누락되었을 수 있습니다.
답변2
당신이하고있는 일은 잘못되었습니다. 당신이 원하는 것은 비밀번호가 없는 SSH 키 쌍을 생성한 다음 (서버가 RSA 키 인증을 지원하는 한) 비밀번호를 입력하지 않고도 들어갈 수 있는 것입니다. 개인 키를 도난당할 수 있는 곳에 보관하면 보안 위험이 있습니다.
이 순서대로:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
- Return비밀번호를 묻는 메시지가 나타나면 누르세요.
- Return두 번째로 눌러 확인하세요.
이제 디렉터리에 두 개의 파일이 있으며 . ~/.ssh
은 원격 서버에 안전하게 배치할 수 있는 공개 키입니다. 비밀번호가 없는 개인 키입니다.mysshkey.pub
mysshkey
mysshkey.pub
mysshkey
아니요원격 서버(또는 다른 사람이 복사본을 얻을 수 있는 위치)에 안전하게 배치할 수 있습니다.
SSH를 통해 액세스하려는 서버에서:
- 원격 서버에 로그인
mkdir -p ~/.ssh
- 콘텐츠를 복사하여 붙여넣으세요
mysshkey.pub
.~/.ssh/authorized_keys
- 이것이 무엇인지
~/.ssh/authorized_keys
확인 하십시오chmod
600
이제 이를 로컬 머신에서 실행하려면 다음 명령을 실행하십시오.
ssh -i ~/.ssh/mysshkey <remote_server_ip>
비밀번호를 입력하지 않고 로그인됩니다.
이는 여러 위치에 비밀번호를 하드코딩하지 않고 비밀번호를 변경할 경우 업데이트할 필요가 없기 때문에 자동 로그인을 관리하는 데 더 선호되는 방법입니다.
답변3
Debian 기반 배포판에서 이 sshpass
패키지는 원하는 것을 더 쉽게 달성할 수 있는 방법을 제공합니다. 이 패키지는 다른 많은 인기 배포판에서 사용할 수 있습니다. 먼저 설정해야 합니다.
echo 'YourPassword' > passwordFile.txt
chmod 600 passwordFile.txt
그런 다음 다음과 같이 스크립트에서 SSH 명령을 호출합니다.
sshpass -f /path/to/passwordFile.txt /usr/bin/ssh -p 8484 [email protected]
을 사용하고 expect
.
답변4
먼저 sshPass를 설치하세요sudo apt-get install sshpass
그런 다음 .bashrc 파일에 별칭을 만듭니다.
alias sshLogin='sshpass -p <your ssh password> ssh username@remote_host'
이제 변경된 .bashrc 파일을 다시 로드하세요.source ~/.bashrc
이제 끝났습니다.
sshLogin
이제 위에서 생성한 별칭을 사용하여 터미널에서 ssh를 실행할 수 있습니다.