我想生成一个 OpenSSL文件,以允许使用文件作为密码.pem
通过 ssh 进行远程登录。.pem
我可以使用以下命令生成密钥.crt
以及文件.pem
sudo openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
但问题是我必须把它放在服务器端的什么位置,或者我必须在/etc/ssh/sshd_config
文件中做哪些更改才能允许使用文件通过 ssh 进行远程登录.pem
。
我希望客户端按以下方式连接我的机器。
ssh -i server_crt.pem username@my_ip
为了实施我到底需要做哪些改变?
谢谢
答案1
首先你需要将公钥上传到你想要连接的服务器,公钥在.pub文件中:
例子:
# ssh-copy-id -i ~/my-certificate.pub [email protected]
此后它应该可以工作并且您应该能够使用以下命令登录:
$ sudo ssh -i ~/my-certificate.pem [email protected]
在服务器上的文件 ~/.ssh/authorized_keys 中进行更改,使用文本编辑器(如 nano)打开,您将看到以类似以下内容开头的行:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAX ...
我个人使用 $ ssh-keygen -t rsa -b 2048 -v 生成密钥文件,它会生成 .pem 和 pub 文件。当你被问到:
输入保存密钥的文件(/home/user/.ssh/id_rsa):
输入 .pem 文件的名称,例如:my-certificate.pem
从生成密钥到登录的步骤:
- 使用生成密钥
$ ssh-keygen -t rsa -b 2048 -v
,当要求输入保存密钥的文件时,输入my-certificate
,当要求输入密码时,按 Enter(空密码)并按 Enter 确认。 - 您将生成两个文件,一个是 my-certificate,一个是 my-certificate.pub,将 my-certificate 重命名为 my-certificate.pem,因此您将有两个文件,my-certificate.pub 和 my-certificate.pem
- 将公共证书上传至服务器:
ssh-copy-id -i ~/my-certificate.pub username@ip
- 将计算机上的 .pem 文件设为只读
sudo chmod 400 my-certificate.pem
- 使用以下方式登录
$ sudo ssh -i /path/to/my-certificate.pem user@ip
答案2
作为最佳答案的补充。确保服务器上的此文件中已打开这些可选项:/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
删除这些注释标记。你可能需要重启 sshd 服务
service sshd restart