
원격 시스템에 SSH로 연결하고 싶지만 비밀번호를 입력하는 대신 다른 파일에서 리디렉션하고 싶습니다.
password.txt
그래서 비밀번호를 저장하는 파일이 있습니다 . File.sh
내 bash 파일입니다.
~ 안에File.sh
#!/bin/bash
ssh -T [email protected]
파일을 실행하는 동안 다음을 수행했습니다.
./File.sh < password.txt
그런데 비밀번호를 입력하라고 하더군요.
파일에서 비밀번호를 입력하려면 어떻게 해야 합니까?
답변1
공개 키 인증으로 '파일의 비밀번호'를 사용하는 SSH가 일반적으로 사용됩니다. 을 사용하여 키 쌍을 생성하고 ssh-keygen
공개 키를 다른 호스트에 업로드합니다.
scp ./.ssh/id_rsa.pub [email protected]:~/
다음과 같이 배치하십시오 ~/.ssh/authorized_keys
.
ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
또는 authorized_keys
파일이 이미 존재하는 경우:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
적절한 권한을 설정합니다(파일의 경우 600, 디렉터리의 경우 700).
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
새로운 SSH 세션을 시작하십시오.
답변2
다음을 수행하는 데 사용할 수 있습니다 sshpass
.
sshpass -f password.txt ssh -T [email protected]
답변3
#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact
Expect는 프로세스를 자동화하는 도구입니다.