ssh免密登录linux
一、远程linux 创建 用户设置密码
adduser username #添加用户名 passwd username #添加登录密码,适合adduser之后没提示设置密码的情况
vi /etc/sudoers (给用户设置root 权限 sudo su -),如不想设置root权限也可跳过该步骤
# User privilege specification root ALL=(ALL) ALL username ALL=(ALL) ALL #此句为添加语句
二、在客户端电脑生成公钥私钥
如果客户端已有公钥私钥可跳过该步骤
ssh-keygen -t rsa #然后一路回车即可
执行完该命令,会在 ~/.ssh 文件夹下生成 id_rsa和id_rsa.pub
三、把公钥传到要登录的linux 账户
把~/.ssh/id_rsa.pub 文件发送到服务器指定账户的authorized_keys中,这样以后用指定的用户名登录该服务器就不在需要输入密码
ssh-copy-id -i ~/.ssh/id_rsa.pub username@host -p 22
接下来即可免密登录linux
ssh username@host -p 22
注意:authorized_keys权限不能太大
chmod 600 authorized_keys
四、客户端配置别名登录
vim ~/.ssh/config
Host haha HostName host User username Port 22 # PreferredAuthentications publickey # IdentityFile ~/.ssh/id_rsa
#设置指定认证方式,可加快连接速度
#如果客户端有多对秘钥,也可通过该方式指定
接下来登录服务器只需要输入:
ssh haha
五、采坑
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
一般情况下不会遇到以下问题,如果遇到了多半是因为服务器上的权限有问题,服务器上的~/.ssh/authorized_keys有严格的权限,过高过低都不行
chmod 700 /home/username #设置用户权限 chmod 700 ~/.ssh #设置ssh 权限 chmod 600 ~/.ssh/authorized_keys #设置 authorized_keys 权限
如果是新创建的用户,没做过权限修改一般不会遇到这个问题
网上有说 修改sshd_config 可以参考,
sudo vim /etc/ssh/sshd_config PubkeyAuthentication yes PasswordAuthentication yes #用root用户登入 PermitRootLogin yes sudo systemctl restart sshd
笔者尝试修改该没什么作用,放这做个参考吧