스크립트에 언급 된 비밀번호를 사용하여 ssh 서버에 자동 로그인 할 수있는 쉘 스크립트를 작성하려고했습니다. 다음 코드를 작성했습니다.
set timeout 30
/usr/bin/ssh -p 8484 root@172.31.72.103
expect
{
"root@172.31.72.103's password"
{
send "password\r"
}
}
이 코드는 제대로 실행되지 않고 여전히 암호를 요구합니다. 누군가이 문제를 해결하는 데 도움을 줄 수 있습니까?
답변
나는 한 번 expect
ssh 서버에 로그인 하는 스크립트를 작성했으며 (귀하의 경우처럼) 내 스크립트는 다음과 같습니다.
#!/usr/bin/expect
spawn ssh MyUserName@192.168.20.20
expect "password"
send "MyPassword\r"
interact
나는 어쩌면 생각 interact
스크립트에 없습니다.
답변
당신은 그것에 대해 잘못된 길을 가고 있습니다. 당신이하고 싶은 것은 암호가없는 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
ISchmod
‘D에600
이제 로컬 머신에서 실행하려면 다음 명령을 실행하십시오.
ssh -i ~/.ssh/mysshkey <remote_server_ip>
그리고 비밀번호를 묻지 않고 로그인합니다.
비밀번호를 변경하는 경우 업데이트해야 할 여러 위치에 비밀번호를 하드 코딩하지 않으므로 자동 로그인을 관리하는 것이 좋습니다.
답변
데비안 기반 배포판에서 sshpass
패키지는 원하는 것을 쉽게 수행 할 수있는 방법을 제공합니다. 이 패키지는 다른 많은 인기있는 배포판에서 사용할 수 있습니다. 먼저 설정해야합니다.
echo 'YourPassword' > passwordFile.txt
chmod 600 passwordFile.txt
그런 다음 다음과 같은 스크립트에서 SSH 명령을 호출하십시오.
sshpass -f /path/to/passwordFile.txt /usr/bin/ssh -p 8484 root@172.31.72.103
다른 로케일을 사용하거나 비밀번호를 변경해야하는 경우와 같은 솔루션보다 더 많은 유연성을 제공합니다 expect
.
답변
먼저 sshPass를 설치하십시오 sudo apt-get install sshpass
그런 다음 .bashrc 파일에 다음과 같이 별칭을 만듭니다.
alias sshLogin='sshpass -p <your ssh password> ssh username@remote_host'
이제 변경된 .bashrc 파일을 다음과 같이 다시로드하십시오. source ~/.bashrc
이제 끝났습니다.
이제 sshLogin
터미널에서 위에서 만든 별칭 을 사용하여 ssh를 실행할 수 있습니다 .
답변
이것을 사용할 수 있습니다 :
sshpass -p 'yourpassword' ssh user@ip
답변
해시 키를 생성하여 PC에 저장하는 데 필요한 모든 것
그냥 입력
ssh-keygen -t rsa -b 4096 # just press Enter till the end
그런 다음 입력
ssh-copy-id <user>@<server>
다음을 사용하여 정상적으로 로그인하십시오
ssh <user>@<server>
이제 비밀번호가 필요 없습니다
참고 : 비밀번호를 일반 텍스트로 저장하면 위험합니다
이 방법은 공개 키 길이가 4096 인 RSA를 사용하여 매우 안전한 비밀번호의 해시 값을 생성합니다.
답변
5 단계로 SSH Keygen을 사용하여 SSH 비밀번호없이 로그인 :
1 단계 : SSH-Kegen 키 인증 – – (192.168.0.12)
먼저 사용자로 서버 192.168.0.12에 로그인 한 후 다음 명령을 사용하여 공개 키 쌍을 생성하십시오.
2 단계 : – 192.168.0.11에
.ssh 디렉토리 작성 다음 명령을 사용하여 서버 192.168.0.12의 SSH를 사용하여 서버 192.168.0.11을 연결하여 그 아래에 .ssh 디렉토리를 작성하십시오.
3 단계 : 생성 된 공개 키를 – 192.168.0.11에
업로드 서버 192.168.0.12에서 SSH를 사용하고 사용자 .ssh
디렉토리 아래의 서버 192.168.0.11에서 새로 생성 된 공개 키 (id_rsa.pub)를 파일 이름 authorized_keys로 업로드하십시오.
4 단계 : 권한 설정 – 192.168.0.11
서버의 SSH 버전이 다르므로 .ssh
디렉토리 및 authorized_keys
파일 에 대한 권한을 설정해야 합니다.
5 단계 : 비밀번호없이 192.168.0.12에서 192.168.0.11로 로그인
이제 비밀번호없이 서버 192.168.0.12의 sheena 사용자로 192.168.0.11에 tecmint 사용자로 로그인 할 수 있습니다.