ssh登录方法
服务端配置
配置文件/etc/ssh/sshd_config
PermitRootLogin yes #允许root用户登录 |
公钥文件~/.ssh/authorized_keys 每一行记录一个公钥,持有相应私钥的用户可登录 把客户端生成的.pub公钥文件,复制里面的内容到此文件即可 注意删除末尾邮箱,如果生成的.pub文件最末尾带有邮箱
# 为 .ssh 目录指定权限 |
删除root密码方法
- passwd -d root
- 编辑
/etc/shadow
,删除root那一行第一个与第二个冒号之间的内容
客户端配置
使用命令生成密钥对 ssh-keygen -t rsa -f "文件名"
参数 | 解释 |
---|---|
-b | 采用长度1024bit的密钥对,b=bits,最长4096,不过没啥必要 |
-t | rsa 采用rsa加密方式,t=type |
-f | 生成文件名,f=output_keyfiles |
-C | 备注,C=comment |
配置文件~/.ssh/config
Host 连接A名称 |
用户可以配置多个ssh 公钥/密钥 对
当服务器配置发生变化时,需要删除~/.ssh/known_hosts文件
连接认证
sh-copy-id命令 可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
authorized_keys 文件用来验证 client 。使用 ssh-copy-id 命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。
如果不传入 -i 参数,ssh-copy-id 使用默认 ~/.ssh/identity.pub 作为默认公钥。如果多次运行 ssh-copy-id ,该命令不会检查重复,会在远程主机中多次写入 authorized_keys 。
使用 ssh-copy-id 的主要功能就是免密码登录远程主机。成功运行该命令之后,就可以免去密码登录远程主机。
注意本地 ~/.ssh/id_rsa 的权限,chmod 400 ~/.ssh/id_rsa ,该文件包含用于授权的私钥,如果该文件可以被其他用户访问,ssh 会忽略该私钥。
|
vscode升级无法连接
VScode自动更新发现连不上远程服务器了(之前配置好的使用密钥免密登录),
报错:ssh remote /vscode配置远程连接失败:过程试图写入的管道不存在
解决方案就是把本地的known_hosts的原服务器信息全部删掉(根据IP地址删除),然后重新连接就可以了。known_hosts在C:_name.ssh路径下,和你的配置文件、密钥在一起。
另外,如果是linux系统,你的.ssh文件夹权限也很重要,多了也不行!因为sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
用户目录权限为 755 或者 700,就是不能是77x、777,需要保障other用户不能有w权限
.ssh目录权限一般为755或者700
rsa_id.pub 及authorized_keys权限一般为644
rsa_id权限必须为600
ssh自动断开
SSH连接总是隔一段时间没有输入时就断开,解决办法有两个,一个是修改服务端配置,另一个是修改客户端配置
服务端修改配置/etc/ssh/sshd_config
如下,再systemctl restart sshd
ClientAliveInterval 60 #服务端主动向客户端请求响应的间隔 |
客户端修改如下配置~/.ssh/config
TCPKeepAlive=yes |