ssh 서버에 로그인하기위한 쉘 스크립트 -p 8484 root@172.31.72.103 expect { “root@172.31.72.103’s

스크립트에 언급 된 비밀번호를 사용하여 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"
   }
}

이 코드는 제대로 실행되지 않고 여전히 암호를 요구합니다. 누군가이 문제를 해결하는 데 도움을 줄 수 있습니까?



답변

나는 한 번 expectssh 서버에 로그인 하는 스크립트를 작성했으며 (귀하의 경우처럼) 내 스크립트는 다음과 같습니다.

#!/usr/bin/expect

spawn ssh MyUserName@192.168.20.20
expect "password"
send "MyPassword\r"
interact

나는 어쩌면 생각 interact스크립트에 없습니다.


답변

당신은 그것에 대해 잘못된 길을 가고 있습니다. 당신이하고 싶은 것은 암호가없는 ssh 키 페어를 생성 한 다음 (서버가 RSA 키 인증을 지원하는 한) 암호를 모두 입력하지 않고도 들어갈 수 있습니다. 개인 키를 도난 당할 수있는 곳에 저장하면 보안 상 위험합니다.

이 단계를 따르세요:

  1. mkdir -p ~/.ssh
  2. cd ~/.ssh
  3. ssh-keygen -type dsa -i mysshkeys
  4. Return암호 구를 입력하라는 메시지가 표시되면 누릅니다
  5. 다시 한 번 눌러 Return확인합니다.

지금 거기에 두 개의 파일이있을 것입니다 ~/.ssh디렉토리 mysshkey.pubmysshkey. mysshkey.pub공개 키이며 원격 서버에 안전하게 보관할 수 있습니다. mysshkey암호가 없는 개인 키이므로 원격 서버 (또는 다른 사람이 사본을 얻을 수있는 곳)에 두는 것이 안전 하지 않습니다 .

서버에서 SSH로 연결하려는 경우 :

  1. 원격 서버에 로그인
  2. mkdir -p ~/.ssh
  3. 복사의 내용 붙여 넣기 mysshkey.pub로를~/.ssh/authorized_keys
  4. 있는지 확인 ~/.ssh/authorized_keysIS chmod‘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 사용자로 로그인 할 수 있습니다.

여기에 이미지 설명을 입력하십시오