我想通过 ssh 执行一个命令,但是我的服务器正在使用密码,我只想创建一行而不询问密码。
~# ssh -t root@dev5 'echo "tes" ; bash'
Enter passphrase for key '/home/sed22/.ssh/id_rsa':
感谢帮助。
答案1
但我的服务器正在使用密码
不是。您的密钥已加密,因此您的客户端正在请求密码短语,以便可以解密。
不要试图从密钥中删除加密 - 这是一件坏事。
而是使用 ssh-agent 或 pageant (windows) 在会话期间将密钥 (安全地) 存储在内存中。具体如何操作取决于您的客户端操作系统。
如果你尝试自动化某个过程,那么你可能必须使用未加密的密钥,但你应该采取特别的预防措施来限制密钥的用途一个例子。
答案2
您可以使用 从密钥中删除密码ssh-keygen -p
。这是名为 FOO 的密钥的开头,如您所见,它是使用密码加密的:
[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
我们删除密码短语(return在提示输入新密码时输入):
[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.
密钥现在已解密:
[me@risby .ssh]$ head -2 FOO
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA2mfFcvjEuIsyZbhdp4U9Hn7XxFr5naBJEqSMGFdrfL7iX38C