Bash 스크립트에서:
source ./expect.sh
예상 코드를 포함합니다.
#!/bin/bash
/usr/bin/expect <<EOL
spawn ssh-copy-id -i /home/user/.ssh/id_rsa.pub 111.111.111
expect '*?assword*'
send 'thepassword'
interact
EOL
나는 이것을 얻습니다 :
spawn ssh-copy-id -i /home/user/.ssh/id_rsa.pub 111.111.111.111
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
그런 다음 연결을 시도하면 비밀번호를 묻는 메시지가 나타납니다.
서버를 확인한 결과 "authorized_keys" 파일이 나열될 것으로 예상했기 때문에 키가 업로드되지 않았음을 확신합니다.
root@server: ls /home/user/.ssh/
known_hosts
내가 뭘 잘못했나요?
답변1
"root"에 대한 설명 외에도 다음과 같은 내용이 있습니다.
- 작은따옴표는 예상의 일반 문자입니다. 큰따옴표를 사용하세요
- 비밀번호를 보낼 때 "Enter"를 누르는 것을 잊지 마세요.
expect "*?assword*"
send "thepassword\r"
heredoc 본문에 변수나 명령 대체를 삽입해야 하는 경우가 아니면 일반적으로 heredoc 끝 단어를 인용하는 것이 좋습니다.
some command <<'END'
# .............^...^
...
END
답변2
당신은 실행합니다 spawn ssh-copy-id -i /home/user/.ssh/id_rsa.pub 111.111.111
. IP 주소가 잘못된 것 같습니다.
답변3
비밀번호 프롬프트에서 볼 수 있습니다. [email protected]
루트의 키인 file 을 원격으로 설정하고 있습니다 /root/.ssh/authorized_keys
. 루트가 아닌 다른 이름으로 스크립트를 실행하거나 user
명시적인 을 제공하면 루트가 아닌 비밀번호 없는 로그인이 허용됩니다.ssh-copy-id ... [email protected]
user