密钥认证方式登录到Linux/Unix
Xshell密钥登录Linux
前言
SSH登录支持两种认证方式:口令(密码)认证方式和密钥认证方式。口令认证方式是最常用的一种,这里介绍密钥认证方式如何登录到Linux/Unix系统。
生成密钥
密钥包含公钥和私钥,是成对的。通过Xshell的新建用户密钥生成向导菜单,生成密钥,默认密钥类型和长度即可。


用户密钥信息,可以修改密钥名称,同时可以给密钥设置密码进行加密。

打开用户密钥管理者,点击属性可以导出公钥,点击导出可以导出私钥。


Linux添加公钥
通过口令方式登录服务器,cd ~进入用户目录下,mkdir .ssh新建文件夹,chmod -R 700 .ssh确保只有所有者可读可写否则无法登录,或者在.ssh目录下执行chmod 600 *。

运行rz命令(通过yum install lrzsz安装),将key.pub发送到服务器,然后运行cat id_rsa_2048_lideyu.pub >> authorized_keys命令,将公钥(Public Key)导入到authorized_keys文件。

通过vim authorized_keys给密钥添加备注。

Xshell配置密钥认证方式登录
新建会话,输入Ip地址。

切换到用户身份验证,方法选择Public Key,用户名选择上一步在哪个用户的.ssh文件添加的公钥,用户密钥选择第一步创建的私钥,如果私钥有设置密码,还需要输入私钥密码,最后点击连接即可。

Linux关闭口令登录
# 打开配置文件
vim /etc/ssh/sshd_config
# 关闭密码登录
PasswordAuthentication no
# 重启ssh
systemctl restart sshd
Linux普通用户添加sudo权限
# 当前用户添加写权限
chmod u+w /etc/sudoers
# 修改配置文件
vim /etc/sudoers
# 添加内容,区分是否需要密码
Shenma ALL=(ALL) ALL
Kjb ALL=(ALL) NOPASSWD: ALL
Linux设置免密登录后仍然需要输入密码
将Xhell生成的的公钥和私钥拷贝到机器上后,私钥放在本地主机,公钥放在远程主机并配置到authorized_keys文件,设置好权限之后,使用ssh user@ip命令登录一直还是提示需要输入密码,后面发现使用ssh -i ~/.ssh/id_rsa_2048_xxx user@ip指定私钥文件命令后执行成功,后面才知道密钥认证时默认使用 ~/.ssh/id_rsa 文件作为私钥。可以通过在~/.ssh目录下新增congfig文件并设置600权限来简化输入密钥文件、用户、Ip。
Host app
HostName 11.1.65.100
User kjb
IdentityFile ~/.ssh/id_rsa_2048_kjb