CNode

Node 如何在终端自动输入密码 ,实现免密码运行 SSH SCP ?

问答
Ffriskfly发布于11 年前最后回复11 年前4 回复8338 浏览0 收藏

我的程序比如 SSH SCP,我用spawn去运行程序 ,需要调用终端的密码输入,这时是不走STDIN的,我该怎么去模拟输入密码?

查看回复

回复 (4)

C
crystaldust#1·11 年前

终端下好像没法直接指定password,只能用ssh密钥,楼主可以安装一些工具,比如sshpass,然后调用sshpass:

sshpass -p PASSWORD ssh -p 22 USER@HOST
sshpass -p PASSWORD scp -P 22 USER@HOST
K
klesh#2·11 年前

做证书登录比较安全

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 会将两端的~目录下面的密钥和公钥进行配对,成功证明是本人。相比每次输入密码,除了省事外也更安全。

F
friskfly#3·11 年前
引用 klesh做证书登录比较安全 1。进入服务器 目录建立.ssh目录: 2。回到本机,进行 目录生成密钥对 连按3个回车在 .ssh 里面生成 id rsa 密钥和 id rsa.pub 3。复制公钥到服...

@klesh 我的目标服务器是台路由器,不知道为什么证书不起作用,所以没办法用这种方法免密码输入。 @crystaldust 的方案还不错,已经用上了,谢谢。

参与回复
登录后即可参与回复。登录