我使用的是Ubuntu 12.04。 我使用ssh连接到许多服务器每天,所以我把他们的参数在.ssh /configuration文件; 喜欢这个 :
Host server1 User tux Port 2202 HostName xxx.x.xx.x
有没有办法把密码放在这个文件中,对于每个连接? 所以当服务器要求密码的时候,terminal把它传给服务器,所以我不用每次input密码。 另外我不想使用公钥/私钥对。
不,没有方法可以通过非交互方式在命令行中指定或提供密码,以使用openssh内置机制进行sshauthentication。 至less不是我所知道的一个。 您可以将您的密码硬编码为期望的脚本,但它也不是一个好的解决scheme。
你肯定会希望使用密钥对进行无密码authentication,正如Michael所说,最后私钥在文件中是一个很大的密码。
为了避免一连串的评论:是的,这是不安全的(甚至可以说是不安全的)。 我强烈build议您只在实验室情况下在孤立networking上执行此操作,或者在没有完全重置/格式的情况下,不涉及生产服务器或生产服务器。
我想设置这个,因为我不认为我的2950交换机支持私钥/公钥,我希望在某个时候获得这些知识,但我还没有。
使用别名和sshpass可以完成。
我的例子别名是:
alias ssc='sshpass -pcisco ssh'
其中“cisco”是密码。 请注意,-p和密码之间没有空格。
用法是(引用问题):
ssc server1
注意:这只回答那些使用search引擎的标题的问题。 如果您使用的是类似问题示例的服务器,则应使用私钥/公钥对,而不要使用此答案
是的,如上所述 – 没有办法简单地保存密码。 我会build议使用ssh密钥进行授权。
首先生成你的密钥:
ssh-keygen
然后在您的服务器/桌面上复制密钥:
ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:
就这样。 永远不会再被要求input密码。
我也build议一般删除密码授权,但这取决于你。
有没有办法做到这一点与ssh,这是不安全的,因为它可以得到。
正如丹尼拉提到你可以使用期望的脚本,但我不打扰。
我想知道你想达到什么目的? 你想从一台服务器跳到另一台吗? 在这种情况下,您需要在工作站上设置和使用ssh-agent,并在目标主机上启用代理转发; 这样的证书交换将被路由到您的本地代理,而不必复制您的私钥。
您可以通过使用sshpass以更安全的方式执行此操作
设置您的密码没有历史
导出PS = your_password ;历史-d $(历史1)
在〜/ .ssh / config中设置主机别名
使用ssh pass来使用环境variables并以单个命令login到所需的机器
sshpass -p $ PS ssh host_alias
您的环境持有您的密码,如果您不知道正在运行的任何脚本是否会泄露此密码,则存在风险