我想通过SSH执行一个命令,但是我的服务器正在使用密码,我只想做一行而不要求密码。
~# ssh -t root@dev5 'echo "tes" ; bash' Enter passphrase for key '/home/sed22/.ssh/id_rsa':
感谢帮助。
但我的服务器正在使用密码
不,这不对。 你的密钥是encryption的,所以你的客户正在请求密码短语,以便它可以解密。
不要试图从密钥中删除encryption – 这是一个坏事。
取而代之的是使用ssh-agent或者pageant(windows)在会话期间把你的密钥(安全地)存储在内存中。 你如何做到这一点取决于你的客户端操作系统是什么。
如果您试图自动化一个进程,那么您可能需要使用未encryption的密钥,但是您应该采取特殊的预防措施来限制该密钥可用于某个示例 。
您可以使用ssh-keygen -p从密钥中删除密码。 这是一个名为FOO的密钥的开始,正如你所看到的,它是用密码encryption的:
[me@risby .ssh]$ head -5 FOO -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,DCF8CD9222D62A42D0BFE4FC284BD6BB f2hDtfkOeUC0Gw0MhQzSvPSj+6XtYX+Y7XMZ7m8BuAz4mg2G/M99LmXlmGW/7AUj
我们删除密码(当提示input新的密码时input回车 ):
[me@risby .ssh]$ ssh-keygen -p -f FOO Enter old passphrase: Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase.
密钥现在是未encryption的:
[me@risby .ssh]$ head -2 FOO -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA2mfFcvjEuIsyZbhdp4U9Hn7XxFr5naBJEqSMGFdrfL7iX38C