Leo Code

主页 > 服务器 > ssh 证书登录linux终端

ssh 证书登录linux终端

作为生产环境使用证书来远程登录SSH要安全的多,记录一下使用证书登录SSH的配置过程。


一、客户端生成公钥和私钥

客户端执行以下命令:(以我的MAC为例)

ssh-keygen -t rsa

这时会提示你确认密钥文件保存的目录,默认即可(/Users/leo/.ssh),直接按回车。

接下来提示你输入私钥密码,注意,请务必输入而且记住。

之后会在书面的目录下生成两个文件,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)。


二、上传私钥文件并配置

客户端执行命令上传私钥文件到服务器的用户目录(注意如果服务器的ssh端口不是22,需要带上 "-P 端口号" 参数):

scp ~/.ssh/id_rsa.pub leo@<ssh_server_ip>:~

上传后,服务器端进入用户目录执行命令(如果没有.ssh目录请创建):

cat  id_rsa.pub >> ~/.ssh/authorized_keys


三、服务器SSH配置文件

服务器执行命令:

vim /etc/ssh/sshd_config

修改配置文件的相关位置

# 禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys
RSAAuthentication yes
PubkeyAuthentication yes
# 此处配置也可改成后面的或直接使用下面默认配置 AuthorizedKeysFile  %h/.ssh/authorized_keys 
AuthorizedKeysFile      .ssh/authorized_keys

# 禁用密码登录
PasswordAuthentication no

配置修改完,重启ssh,执行命令:

/etc/init.d/sshd restart


四、使用证书登录ssh

客户端执行登录命令(注意:如果ssh端口号不是22,请添加-p参数)

ssh -i .ssh/id_rsa leo@<ssh_server_ip>

提示输入证书密码,输入即可。


五、windows使用Xshell登录

如果你已经在其他linux的客户端已经生成了证书文件,那么与正常登录一样,只是在选择用户身份验证时选择public key方式。用户密钥浏览里面导入刚刚的私钥文件,并在密码栏处填写私钥的密码。

如果没有已经生成的私钥文件,那么只需在刚刚选择证书的窗口中点击生成按钮,生成正式文件并设置密码。然后把生成的公钥文件上传到服务器,并执行上面第一到四步。