Node 如何在终端自动输入密码 ,实现免密码运行 SSH SCP ?
我的程序比如 SSH SCP,我用spawn去运行程序 ,需要调用终端的密码输入,这时是不走STDIN的,我该怎么去模拟输入密码?
4 回复
终端下好像没法直接指定password,只能用ssh密钥,楼主可以安装一些工具,比如sshpass,然后调用sshpass:
sshpass -p PASSWORD ssh -p 22 USER@HOST
sshpass -p PASSWORD scp -P 22 USER@HOST
做证书登录比较安全
1。进入服务器~目录建立.ssh目录:
ssh server-user@server.com
cd ~
mkdir .ssh
exit
2。回到本机,进行~目录生成密钥对
ssh-keygen -t rsa
#连按3个回车在 .ssh 里面生成 id_rsa 密钥和 id_rsa.pub
3。复制公钥到服务器
cat .ssh/id_rsa.pub | ssh server-user@server.com 'cat >> .ssh/authorized_keys'
#输出本地的公钥内容,然后桥接到 ssh server 上面的 cat 命令,它会把接收到的内容作为新行放到 .ssh/authorized_keys 文件中
4。现在退出,再登录 server-user@server.com 就不需要输入密码了。原理上基本就是 ssh 会将两端的~目录下面的密钥和公钥进行配对,成功证明是本人。相比每次输入密码,除了省事外也更安全。
@klesh 我的目标服务器是台路由器,不知道为什么证书不起作用,所以没办法用这种方法免密码输入。 @crystaldust 的方案还不错,已经用上了,谢谢。
@friskfly 不客气,happy it helps