0
我一直在嘗試自動創建用戶和配置ssh訪問。如何通過bash腳本向主機添加ssh密鑰
到目前爲止,我創建了一個訪問主機的腳本,並創建希望通過新的用戶,如下所示:
expect -c '
spawn ssh '$user'@'$ip';
expect "assword: ";
send "'$passwd'\r";
expect "prompt\n";
send "adduser '$new_user'\r";
...
send "mkdir /home/'$new_user'/.ssh\r";
expect "prompt\n";
send "exit\r";
'
這工作得很好,在那之後我需要在關鍵的.pub文件添加到授權密鑰文件在主機中,那裏是開始的地方。
我想:
ssh_key='/home/.../key.pub'
content=$(cat $ssh_key)
expect -c '
spawn ssh '$user'@'$ip' "echo '$content' >> /home/'$new_user'/.ssh/authorized_keys;
expect "password:";
...
'
,並得到:
missing "
while executing
"spawn ssh [email protected] ""
couldn't read file "<ssh .pub key content> ...
我也試過:
cat $ssh_key | ssh [email protected]$ip "cat >> /home/$new_user/.ssh/authorized_keys"
沒有成功,我只得到密碼查詢閃爍,我不能將期望與最後一種方法聯繫起來。
你可能會習慣使用http://shellcheck.net/ - 它會抓住你的bug。 –