我发现的每个 SSH 教程或说明似乎都忘记了涉及两台计算机或服务器。
我正在尝试创建一个托管在远程服务器上的网站。我生成了密钥以便可以访问该网站。现在我需要从我的电脑访问该网站。
所以我有这些密钥,但不知道该怎么用它们才能让它们工作。每个教程或说明都说我需要为我的计算机系统生成密钥并将它们保存在一个不存在的文件中。这不仅没有任何意义,而且似乎与使用为此目的已经生成的网站密钥从我的计算机访问远程服务器没有任何关系。显然有些信息丢失了。有人能解释一下我该怎么做吗?
看起来应该很简单,但是我应该把哪个键放在哪里,如何启动连接?我已经在 Linux 中使用终端多年了。你可能认为我睡梦中也知道这一点,但我不知道。
答案1
你总是会产生一对按键数:A私人的密钥(你应该保密)以及民众密钥,其他人可以看到。
因此,对于允许您远程访问网站的密钥,这些密钥可识别你(它们证明你的身份)。这意味着私钥应该留在你的计算机上,而公钥应该在偏僻的电脑。
因此,具体来说,您将生成一个id_rsa
(私有) 和一个id_rsa.pub
(公共) 密钥。只需将这两个密钥保存在.ssh
您计算机上的主目录中的目录中(通常,您会在 cd 进入该目录后创建它们)。密钥id_rsa
将自动用作ssh
您的身份,而id_rsa.pub
密钥将被忽略,但如果您需要它,您会知道它在哪里。
在远程端,在.ssh
您要登录的帐户的目录中,有一个authorized_keys
文件,其中包含一个公钥列表,每行一个。读取此文件以sshd
找出谁被允许连接到此帐户。
编辑该文件并id_rsa.pub
在新行中添加本地内容,或者,如果该文件不存在,或者只包含一个键,则只需将本地内容复制id_rsa.pub
到authorized_keys
。
就是这样。当然,您可以使用脚本来自动执行此过程,但归根结底就是这样。
答案2
默认情况下,你的 ssh 密钥保存在文件夹中/home/[youruser]/.ssh/
。要使用 ssh 连接,你可以使用以下方式:
ssh [username]@[server] -i ~/.ssh/id_rsa -p [port-number-of-ssh]
使用示例:
ssh [email protected] -i ~/.ssh/id_rsa -p 22
或者您可以忽略密钥并使用参数输入连接密码来忽略密钥验证,看示例:
ssh [email protected] -o PubkeyAuthentication=no -p 22
祝你好运!
答案3
假设,服务器A和服务器B上的用户登录名相同。您想从服务器A登录到服务器B。
在 serverA 上,如果您尚未这样做,请生成 ssh 密钥对:
ssh-keygen -t rsa -N ''
在服务器 A 上,运行以下命令设置权限,以便在从服务器 A ssh 到服务器 B 时不会提示您输入密码:
ssh-copy-id serverB
系统将提示您输入密码。
如果 ssh-copy-id 命令成功,则验证您可以从服务器 A ssh 到服务器 B 而无需输入密码。
ssh serverB
如果你进入服务器B,你就完成了。
希望这可以帮助