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
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 restart
或service sshd restart
或/etc/init.d/ssh restart
PermitRootLogin yes
PermitEmptyPasswords no
PasswordAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
总结
- 一开始急于实现功能,没有仔细探究原理,找了很多使用公钥免密登陆教程,其中最大的问题竟然是私钥文件不是默认命名,登陆也没有指定私钥文件,不懂原理真的很吃亏
- 其次找到高质量教程很重要,通俗易懂又面面俱到,而不是一语带过。只要官方教程不是晦涩难懂,还是以官方文档为主
打开App,阅读手记