Estoy usando este comando en el Servidor1
~# ssh root@Server2 /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
para agregar el contenido del Servidor2 id_rsa.pub
al authorized_keys
del Servidor1.
Funciona si lo hago manualmente pero cuando lo hago en un script esperado:
#!/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
Lo que sucede cuando uso el script es que el id_rsa.pub
del Servidor2 se agrega al authorized_keys
del Servidor2.
¿Cuál sería la sintaxis correcta?
Respuesta1
Parece que expect no es un shell, por lo que lo pasa >>
como argumento a ssh en lugar de interpretarlo.
Intentarspawn bash -c "ssh root@[lindex $argv 0] cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys"