酷徒LOGO

如何使用密码自动登录SSH登录?


问题:

如何使用密码自动登录SSH登录? 我正在配置测试虚拟机,因此不考虑太高的安全性。 SSH为可以接受的安全性选择了最小配置。

ex )


echo password | ssh id@server



这不工作。

我记得我用某些技巧来做这个,但是我现在记不起我使用的技巧。


回答 1:

不要使用密码。生成 passphraseless SSH密钥并将它的推送到虚拟机。

如果你已经有SSH密钥,则可以跳过这里步骤。 只需输入输入键和两个密码短语:


$ 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',然后签入:


.ssh/authorized_keys



确保我们没有添加你不需要的额外密钥。

最后检查登录。


$ ssh id@server



id@server:~$ 



如果你想将密钥保存为密码短语,那么你可能还想查看使用 ssh-agent


回答 2:


$ sudo apt-get install sshpass


$ sshpass -p your_password ssh user@hostname




回答 3:

正确答案是 sshkey,还有更安全的方法- SSH键。 你只需向解决方案中添加三个简单步骤:

生成一个收费的rsa密钥 keypair::

 
# ssh-keygen



 

然后在服务器上复制一个简单的命令,然后将它的复制到服务器上:


# ssh-copy-id userid@hostname



你现在可以英镑的方式登录,而无需密码:


# ssh userid@hostname




回答 4:

使用预期:


#!/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 --"$passr"


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




回答 5:

这可能对你没有任何用处,但你可以使用 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! $!";




回答 6:

你肯定不想使用SSH密钥而不是密码? 这种方式既安全又自动。


回答 7:

我很惊讶没有有人从Ubuntu的putty-tools 软件包中提到 plink:


plink user@domain -pw mypass [cmd]



它在 Windows 上也可用,并且语法主要与openssh客户机兼容。


回答 8:

SSH单一登录通常使用 public 密钥验证和身份验证代理实现。 你可以轻松地将你的测试虚拟机密钥添加到现有的身份验证代理( 请参阅下面的示例) 中。 其他方法,如 gssapi/kerberos存在但更复杂。

sshpass

如果 password 是唯一可用的身份验证方法,sshpass 可以用于自动输入密码。 请特别注意手册页安全考虑部分。 在所有三个选项中,在某一点上可以看到或者以明文方式存储密码,在某些情况下为:

匿名管道( sshpass推荐)


# Create a pipe


PIPE=$(mktemp -u)


mkfifo -m 600 $PIPE


# Attach it to file descriptior 3


exec 3<>$PIPE


# Delete the directory entry


rm $PIPE


# Write your password in the pipe


 echo 'my_secret_password'> &3


# Connect with sshpass -d


sshpass -d3 ssh user@host



# Close the pipe when done


exec 3>&-



在bash中,它相当麻烦,在编程语言中。 在写入密码之前,另一个进程可以附加到你的管道/fd 。 机会的窗口很短,只限于你的进程或者 root 。

环境变量


# Set your password in an environment variable


 export SSHPASS='my_secret_password'


# Connect with sshpass -e


sshpass -e ssh user@host



你和 root 可以读取你的进程'环境变量 ( 例如 。 当sshpass运行时,你的密码) cat/proc/<pid>/environ | tr '' 'n' | grep ^SSHPASS= ) 。机会的窗口更长,但仍限于你自己的进程或者 root,而不是它的他用户。

命令行参数( 最不安全)


 sshpass -p my_secret_password ssh user@host



这是方便但不安全的,如手册页所述。 命令行 参数对所有用户都可见( 比如 。 ps -ef | grep sshpass ) 试图隐藏参数,但在which所有用户可以看到你的密码传递的密码。

便笺

将你的bash HISTCONTROL变量设置为 ignorespace 或者 ignoreboth 并使用空格前缀你的敏感命令。 它们不会被保存在历史中。

SSH public 密钥身份验证


# Generate a key pair


# Do NOT leave the passphrase empty


ssh-keygen


# Copy it to the remote host (added to. ssh/authorized_keys)


ssh-copy-id user@host



密码是非常重要的。 任何人都得到 private 密钥文件将无法使用它没有密码密码。

设置SSH身份验证代理程序


# Start the agent


eval `ssh-agent`


# Add the identity (private key) to the agent


ssh-add/path/to/private-key


# Enter key passphrase (one time only, while the agent is running)



照常连接

 
ssh user@host



 

优点是你的private 密钥被加密,你只需输入一次( 通过更安全的输入法)的密码。


回答 9:

根据你的自动化需求,可以能,会适合你。 它可以很好地管理诸如提示密码。提示 sudo 密码。各种更改使用方式。安全使用加密密钥( 保管库) 等等。

如果不合适,我建议期望,如其他答案所建议。






Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷