如何使用私钥 ssh 到远程服务器?

如何使用私钥 ssh 到远程服务器?

我有两台服务器。两台服务器均采用 CentOS 5.6。我想使用我拥有的私钥(OpenSSH SSH-2 私钥)通过 SSH 从服务器 1 到服务器 2。

我不知道如何在unix上做到这一点。但我在 Windows 上使用 Putty 所做的是将我的 OpenSSH 私钥提供给 putty-gen 并生成 PPK 格式的私钥。

但是,我将从服务器 1 创建一个 bash 脚本,该脚本将通过 SSH 在服务器 2 上执行一些命令。

如何使用服务器 1 中的私钥文件通过 SSH 连接到服务器 2?

答案1

长话短说:要内联使用现有私钥,您需要使用参数选择身份文件路径,-i如下所示:

ssh -i '/path/to/keyfile' username@server

您需要 SSH 公钥,并且还需要 SSH 私钥。可以使用 生成密钥ssh-keygen。私钥必须保存在服务器 1 上,公钥必须存储在服务器 2 上。

这在 openssh 的手册页中有完整的描述,所以我会引用很多。您应该阅读“身份验证”部分。另外 openSSH 手册应该非常有帮助:http://www.openssh.org/manual.html

请小心使用 ssh,因为这会影响服务器的安全。

man ssh

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

这意味着您可以将私钥存储在 .ssh 的主目录中。另一种可能性是通过参数开关告诉 ssh-i使用特殊的身份文件。也来自man ssh

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

这是用于私钥的。现在您需要在服务器 2 上引入您的公钥。再次引用man ssh

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

实现此目的的最简单方法是将文件复制到服务器 2 并将其附加到authorized_keys 文件中:

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

ssh 守护程序必须允许通过公钥进行授权,请参阅man ssh_config。通常这可以通过在配置文件中添加以下语句来完成:

PubkeyAuthentication yes

答案2

我使用 ssh 和 -i 选项在此处添加您的密钥。

如果你想通过 .sh 文件传递​​ arg1,arg2,只需在 .sh 文件后面传递它,并使用空格分隔即可。

ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"

答案3

您需要做的第一件事是确保您已运行 keygen 命令来生成密钥:

ssh-keygen -t rsa

然后使用此命令将密钥推送到远程服务器,修改它以匹配您的服务器名称。

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

答案4

id_[rd]sa.pub将源计算机(您进行 ssh 操作的位置)的公钥 ( ) 附加到~/.ssh/authorized_keys您想要 ssh 进入的用户名的目标服务器的文件中。如果您丢失了公钥,则需要使用ssh-keygen.对于大多数用途来说,使用默认参数应该没问题。如果您需要更详细的说明,您可以在谷歌上搜索数千个教程。

相关内容