如何使用密码自动loginSSH?

如何使用密码自动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密钥而不是密码? 这样既安全又自动。