我想在使用 SSH 登录远程 linux 服务器时自动输入密码。
我制作了一个可执行的bash脚本
#! /bin/bash
ssh user@machine.remote.host
但是有没有办法让我的密码输入自动化?
我想在使用 SSH 登录远程 linux 服务器时自动输入密码。
我制作了一个可执行的bash脚本
#! /bin/bash
ssh user@machine.remote.host
但是有没有办法让我的密码输入自动化?
ssh-keygen # generate a pair of RSA keys
scp ~/.ssh/id_rsa.pub user@machine.remote.host:id_rsa.tmp # copy the public key to remote host
ssh user@machine.remote.host # ssh to remote server, this time it requires password
cat id_rsa.tmp >> .ssh/authorized_keys # add the public key to authorized_keys
然后,您可以注销并在没有密码的情况下登录。
除非您正在谈论跳过密码输入(通过 SSH 密钥),否则expect将自动进行交互:
set pass "MYPASSWORD"
spawn ssh ME@MYHOST
expect -re "assword: *$";
send -- "$pass\r"
expect -re "\$ *$";
interact
sshpass
在 Debian / Ubuntu Linux 下安装
键入以下命令:
$ sudo apt-get install sshpass
如何使用 sshpass?
server.example.com
使用密码登录到调用的 ssh 服务器t@uyM59bQ
:
$ sshpass -p 't@uyM59bQ' ssh username@server.example.com
在 shell 脚本下,您可能需要禁用主机密钥检查:
$ sshpass -p 't@uyM59bQ' ssh -o StrictHostKeyChecking=no username@server.example.com
如何使用 rsync 备份 /var/www/html?
使用密码验证通过 SSH 运行 rsync,在命令行上传递密码:
$ rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/
我对此进行了广泛的研究,这就是我决定学习python的原因。最简洁的答案是不”。标准 bash 无法将密码传递给 ssh 提示符。您可以安装一些东西,例如 expect 或 sshpass,它们可以为您提供此功能,但使用这些取决于您在运行脚本的服务器上是否有自由漫游。如果您曾经想学习 python,这是一个很好的学习方法。有一个名为“Fabric”的python模块,它内置了这个功能,并且易于使用。
抱歉,这不是一个真正的答案,只是想我会传递我的建议,因为我一直在你所在的地方......
对于想要自动化人机交互的任何情况,Expect 都是首选工具。
检查一下...它很容易学习(至少对于像您需要处理的简单任务这样的简单任务),并且发现它已经安装在许多服务器中的情况并不少见。
只是想我会传达我对此的看法......祝你好运!