如果要使用 ssh 连接服务,首先我们需要生成私钥和公钥,私钥留在本地,公钥上传到服务器,这样在连接时,才可以做认证服务。
初始时,对于 linux 系统上的每一个用户,对应的 home 目录下都有一个 .ssh 隐藏目录,就是用来存放生成的秘钥和私钥的
用 ssh-keygen 生成命令生成秘钥和公钥
ssh-keygen -t rsa
成功生成密钥对,可以看到多出两个文件,id_rsa 是私钥文件,留在本机中用于连接服务器, id_rsa_pub 是对应的 公钥文件,上传到服务器使用
命令登陆 ssh -i 私钥路径 用户名@IP地址
如果默认使用 .ssh 下的私钥 则不用加 -i 选项来特别指出使用的秘钥
ssh root@127.0.0.1 -i id_rsa
sshd_config 的一些选项设置
/etc/ssh/sshd_config
Port 22 # 端口
# AddressFamily any
# 监听特定 ip 的连接
# ListenAddress 0.0.0.0
# ListenAddress ::
# 是否允许 root 用户远程连接
PermitRootLogin yes
# 密码认证
PasswordAuthentication yes
设置文件权限
chmod 0600 ~/.ssh/authorized_keys
权限设置
chmod 700 /.ssh
chmod 644 /.ssh/authorized_keys //公钥文件的所有权限
chmod 600 /.ssh/id_rsa //私钥文件的所有权限
报错invalid format解决
于我而言是windows在利用GlassFish任意文件读取
访问私钥文件ed25519_key时,复制粘贴保存的密钥文件
从而导致可能多了/n什么的,直接在Linux Firefox里访问,然后复制粘贴,保存为以下格式就不报格式错误了
记得最后要有换行哦!
还有说法说中间的密钥不要换行的,不行可以试试这方法
SSH permision denied可能的解决办法
这个主要是服务端的锅,不学了,Mark!
How to Fix SSH Failed Permission Denied (publickey,gssapi-keyex,gssapi-with-mic)
最后啥都修好了,结果连接上了,让我输入密码,我真服了,据说是服务器配置的锅,本地能改的文件权限、密钥文件格式都做到了。服了服了 SSH 免密登录(设置后仍需输入密码的原因及解决方法)