如何使用密码自动loginSSH? 我正在configuration我的testing虚拟机,所以不重视安全性。 使用最less的configurationselectSSH进行可接受的安全
EX)
echo password | ssh id@server
这不起作用。
我记得我用一些技巧做了这个,有人引导了我,但是现在我不记得我用过的技巧了。
不要使用密码。 生成无密码的SSH密钥并将其推送到您的虚拟机。
如果您已经拥有SSH密钥,则可以跳过此步骤…只需按Enter键input密钥和两个密码即可:
$ ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub.
将您的密钥复制到目标服务器:
$ ssh-copy-id id@server id@server's password:
现在尝试使用ssh 'id@server'login到计算机,然后检入:
.ssh/authorized_keys
以确保我们没有添加额外的键,你不期望。
最后检查login…
$ ssh id@server id@server:~$
如果你想尝试用密码保护你的密钥,你也可以考虑使用ssh-agent 。
$ sudo apt-get install sshpass $ sshpass -p your_password ssh user@hostname
三个简单的步骤轻松回答
生成一个rsa密钥对 :
# ssh-keygen
然后用一个简单的命令将其复制到服务器上:
# ssh-copy-id hostname
你现在可以不用密码login :
# ssh hostname
使用期望:
#!/usr/bin/expect -f # ./ssh.exp password 192.168.1.11 id set pass [lrange $argv 0 0] set server [lrange $argv 1 1] set name [lrange $argv 2 2] spawn ssh $name@$server match_max 100000 expect "*?assword:*" send -- "$pass\r" send -- "\r" interact
例:
# ./1.ex password localhost ooshro spawn ssh ooshro@localhost ooshro@localhost's password: Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux Ubuntu 10.10 Welcome to Ubuntu! * Documentation: https://help.ubuntu.com/ Last login: Tue Mar 1 12:41:12 2011 from localhost
这可能对你没有任何用处,但是你可以用Perl来完成:
\#!/usr/bin/perl use warnings; use strict; use Net::SSH::Perl; my $host = 'remote.serv.er'; my $user = 'root'; my $pass = 'hunter2'; my $ssh = Net::SSH::Perl->new('$host'); $ssh->login('$user', '$pass') or die "Oh noes! $!";
当然你不想使用SSH密钥而不是密码? 这样既安全又自动。