手记

ssh——windows 上使用(免密登陆及相关配置)

ssh——windows 上使用(免密登陆及相关配置)

  • 解释下用户目录,及用户工作目录,linux 系统登陆之后就处在工作目录,路径显示的是~符号,所以~代表的就是用户目录。windows 系统的用户目录位于C:\\User\\用户名\\。无特殊说明,下文~均指用户目录
  • 现在 win10 默认命令行工具使用的是 powershell,执行命令cd ~即可切换到用户命令,explorer.exe .可在文件夹打开当前目录

安装

win10 上的 ssh

  • win10 1803 版本自带并启用
  • 开启步骤:设置-应用-应用和功能-管理可选的功能-添加功能-OpenSSH 客户端

删除 ssh 中旧的 RSA key

  • ssh-keygen -f "~/.ssh/known_hosts" -R 192.168.188.247
  • 或者端口不是 22 的情况,ssh-keygen -f "~/.ssh/known_hosts" -R [192.168.188.247]:3645

客户端配置文件

  • 这里可以配置不同主机的信息,该文件位于~/.ssh/config
  • 使用的时候可以直接使用名称,例如ssh root@192.168.52.129可用ssh alpine替代
Host alpine
    HostName 192.168.52.129
    User root
    IdentityFile ~/.ssh/id_rsa-remote-ssh

使用公钥实现免密登陆

  • 默认生成是在~/.ssh/id_rsa~/.ssh/id_rsa.pub,pub 后缀为公钥
  • 公钥为服务器持有,用于加密,私钥客户端持有,用于解密,证明你拥有私钥
  • 登录时默认查找使用~/.ssh/id_rsa尝试免密登陆,如果是其他名称,使用参数ssh -i id_rsa_name user@host指定私钥
  • 生成密钥对,这里不添加加密私钥的密码,所以一路回车
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa-remote-ssh
  • 在~/.ssh/config 配置远程主机信息
Host alpine
    HostName 192.168.52.129
    User root
    IdentityFile ~/.ssh/id_rsa-remote-ssh
  • 将公钥文件传输到远程主机,此时远程主机还没有公钥,所以上面的配置文件虽然指定 IdentityFile,但仍然需要输入密码
cd ~/.ssh
scp id_rsa-remote-ssh.pub alpine:~/tmp.pub
  • 将本地公钥(id_rsa.pub 文件)的内容添加到 ssh 主机上相应的授权密钥文件中
ssh alpine "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"

服务端登录相关配置

  • 配置文件一般位于/etc/ssh/sshd_config
  • 将配置项前面的#号去掉,然后修改值
  • 重启服务,service ssh restartservice sshd restart/etc/init.d/ssh restart
PermitRootLogin yes #允许root登录
PermitEmptyPasswords no #不允许空密码登录
PasswordAuthentication yes # 设置是否使用口令验证
AuthorizedKeysFile .ssh/authorized_keys #指定授权文件

总结

  • 一开始急于实现功能,没有仔细探究原理,找了很多使用公钥免密登陆教程,其中最大的问题竟然是私钥文件不是默认命名,登陆也没有指定私钥文件,不懂原理真的很吃亏
  • 其次找到高质量教程很重要,通俗易懂又面面俱到,而不是一语带过。只要官方教程不是晦涩难懂,还是以官方文档为主
0人推荐
随时随地看视频
慕课网APP