Server1에서 이 명령을 사용하고 있습니다.
~# ssh root@Server2 /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
Server2의 내용을 Server1의 id_rsa.pub
내용에 추가합니다 authorized_keys
.
수동으로 수행하면 작동하지만 Expect 스크립트에서 수행하면 작동합니다.
#!/usr/bin/expect
set timeout 60
spawn ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
expect "yes/no" { send "yes\r"
expect "*?assword" { send "[lindex $argv 1]\r" }
} "*?assword" { send "[lindex $argv 1]\r" }
interact
스크립트를 사용할 때 일어나는 일은 id_rsa.pub
Server2의 가 Server2의 위에 추가된다는 것입니다 authorized_keys
.
올바른 구문은 무엇입니까?
답변1
예상은 쉘이 아닌 것처럼 보이므로 >>
해석하는 대신 ssh에 인수로 전달됩니다.
노력하다spawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"