笔记:Putty设置及使用公钥验证登录

本文最后更新于:2020-09-17

迁移Linux系列

Putty设置

Putty for Linux
刚开始没搞懂怎么用

后面终于会用了,给我的感觉就是把config文件图形界面化

  • 打开软件,中间一大栏,是选择config文件,可以Load Save Delete
  • 有一个Default Settings,这个是Putty启动时默认加载的,也是创建其他config文件的模板
  • 添加SSH配置,需要填好Host Name/IP address Port等参数,然后在Saved Sessions下面的空白栏输入这个配置的名称,最后点击Save按钮保存
  • 后面如果要更改配置,需要先点击这个配置文件,点Load加载(相当于打开这个配置文件),更改完成之后,点击Save(相当于保存文件)

先把Default Settings配置好,之后创建新SSH配置会减少很多工作量

下面是我的一些基础配置

  • Window
    改窗口大小
    默认的SSH窗口太小,在Columns Rows改成合适的大小
  • Window ->> Selection
    Ctrl Shift C/VClipboard,和终端一致
  • Connetction
    TCP keepalives
    勾选这个,保持SSH登录始终在线
    只勾选这个还不行,需要把上面的Sending of null packets to keep sessions active,发送空数据包间隔时间填一个数值,比如4秒
  • Connetction ->> Data
    Auto-login username填上登录用的用户名,登录时就不用手敲了
  • Connetction ->> Proxy
    这个墙国必备,不多说了

这些是我在Putty里的基础设置,剩下字体、颜色之类的随喜好来
(费了点时间才整好,不写下来太亏了

公钥验证登录

如果要实现真正的“一键登录”,可以设置公钥验证登录,既方便又安全,何乐不为

参考资料:

荒岛 - SSH那点事:公钥验证/两步验证/Fail2ban
Log in to a Linux server with an SSH private key on a Windows client
How To Use Putty with an SSH Private Key Generated by OpenSSH

我太菜了,看第一篇荒岛的教程没搞懂到底哪台是本地机,哪台是远程机,看了第二篇教程才搞懂

大概思路:

本地电脑生成一对密钥,私钥自己存好,公钥放到远程机器上,远程机器开启公钥认证功能
这样你用本地电脑登录的时候,远程电脑用公钥一看,这个电脑是熟人,放行

步骤:

  • 本地电脑生成密钥对
    • ssh-keygen -b 4096一路回车,生成一对密钥id_rsa id_rsa.pub
      第一个是私钥,保存好,第二个公钥,给别人
  • 远程电脑开公钥认证功能
    • mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys 在远程电脑上创建文件,记录密钥
    • chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys 改权限,不让别人看
    • vim ~/.ssh/authorized_keys 把本地电脑的公钥写进去
    • vim /etc/ssh/sshd_config 编辑sshd配置文件
      • PubkeyAuthentication yes 开启公钥认证功能
      • PasswordAuthentication no (optional) 如果需要,可以关闭密码登录
    • systemctl restart sshd 重启sshd服务
  • Putty配置密钥登录
    • puttygen转换密钥
      Putty不能直接使用RSA密钥文件,需要转为Putty专用格式,安装Putty时已经安装了转换工具,命令为puttygen inputfile -o ouputfile
      在命令行输入puttygen ~/.ssh/id_rsa -o ~/.ssh/id_rsa_putty转换本地电脑私钥文件
    • 验证方式选择密钥
      Connetction ->> SSH ->> Auth
      Private key file for authentication 选刚才转换好的id_rsa_putty,保存一下

现在就可以“一键登录”远程主机了

完结撒花


更新

2020/09/16 更新

本地电脑生成密钥对,这个步骤默认使用RSA算法
看网上说似乎ed25519算法似乎安全性更高

ssh-keygen -t ed25519 -b 2048,这样就可以用ed25519类型的密钥

2020/09/17 update

How to Change Default SSH Port in CentOS 8
How To Change OpenSSH Port On CentOS 7

Need to allow SSH port(eg.2244) through the firewall

1
2
3
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-port=2244/tcp
sudo firewall-cmd --reload

本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0协议 。转载请注明出处~