V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
rockage
V2EX  ›  Linux

采用 SSH KEY 登录

  •  
  •   rockage · 2022-06-06 19:29:55 +08:00 · 3098 次点击
    这是一个创建于 935 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1. ssh key 的好处?

    如果采用传统密码登录的话,每次登录都会弹出大量的非法登录警告:

    grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more
    

    采用 ssh key 登录后,安全性提高了。 其次,不用再输入密码,方便。


    2. 方法(以 root 用户为例)

    ssh-keygen -t rsa

    此命令在 /root/.ssh 生成了 2 个文件:id_rsa 为私钥,id_rsa.pub 为公钥,此处如果是普通用户的话,则目录是 /home/用户名 /.ssh

    cp /root/.ssh/id_rsa.pub  /root/.ssh/authorized_keys
    chown -R 0700  ~/.ssh
    chown -R 0644  ~/.ssh/authorized_keys
    chown -R root:root /root
    

    修改 ssh 配置文件: nano /etc/ssh/sshd_config 修改这几个地方:

    RSAAuthentication yes
    StrictModes no
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    PasswordAuthentication yes
    

    3. Windows 客户端配置 PuTTY 使用证书登录

    PuTTY 是一个很常见的 SSH 客户端,PuTTY Key Generator 是其附属的专门用于生成密钥的工具(注意这是两个独立的软件)

    • 制作用于 Putty 的私钥 下载 id_rsa 到本地 下载 PuTTY 和 PuTTY Key Generator: (下载地址: https://www.puttykey.com/download-putty/)
    • 点击 File – Load private key(All Files .)
    • 导入 id_rsa 文件;
    • 点击 Save private key 按钮,命名并生成 ppk 文件, 这个 ppk 文件就是用于 PuTTY 的私钥。
    • 设置 PuTTY 实现用证书登录
    • Putty→Session:输入 Host Name 或者 IP Address ;
    • Putty→Connection→Data:输入 Auto-login username(自动登陆用户名);
    • Putty→Connection→SSH→Auth:在 Private key file for authentication 选择私钥文件;
    • Putty→Session:Saved Session:输入某个名称保存,以后直接双击该名称就可登录。

    4. Windows 客户端 Bitvise 的设置

    与 PuTTY 不同,Bitvise 的私钥生成并不像 PuTTY 那样需要一个独立的程序,设置上要简单一些。

    • 打开 Bitvise
    • Host 填服务器地址
    • Username 填 root
    • Inital method 选 publickey
    • 点击 Host key manager ,点击 More ,选 Remove All
    • 点击 Client key manager ,点击 Import 按钮,文件类型选所有 All Files 类型,直接导入我们从- 服务器下载的 id_rsa 文件即可
    • 回到主界面在 Client key 里选择:Profile 1
    • 点击 Log in 按钮登陆即可。

    5. 完全屏蔽密码登录

    当我们确认 SSH KEY 登录没有任何问题后,就可以将密码登录取消了: 还是修改 ssh 配置文件: nano /etc/ssh/sshd_config 修改这个地方:

    PasswordAuthentication no
    

    6. FAQ

    • SSH 完全无法使用了

    答:有可能是把 PubkeyAuthentication no 证书登录,和 PasswordAuthentication no 密码登录都设成了 no ,这样无论是采用公钥登录还是密码登录都会被拒绝,这就比较麻烦了,需要接上显示器键盘本地登录。(这也是为什么在 SSH KEY 登录没有完全测试成功之前,不能轻易将密码登录取消的原因)

    • 所有设置都仔细检查,没有问题,但还是报错:Authentication failed. The key has been rejected 。

    答:一般来说是目录权限问题,仔细检查 chmod 那几个命令是否成功执行。

    11 条回复    2022-07-26 09:45:53 +08:00
    oneisall8955
        1
    oneisall8955  
       2022-06-06 19:39:34 +08:00 via Android
    客户端在~/.ssh/.config 写 host 和 key 位置,可以直接 ssh xxx 登录主机
    czwstc
        2
    czwstc  
       2022-06-06 20:28:18 +08:00 via iPhone   ❤️ 1
    可以试试 ssh-copy-id user@server 一键推送公钥
    lcvs
        3
    lcvs  
       2022-06-06 21:08:43 +08:00
    平常都用 Mac 自带终端进行 ssh 连接,基本不用 ssh 客户端
    可以百度下“.ssh/config”,写法和用法跟 1 楼一样,但不是.config
    oneisall8955
        4
    oneisall8955  
       2022-06-06 21:48:39 +08:00 via Android
    @lcvs 谢谢纠正,你说的才是正确的,后面打多了.
    Macv1994
        5
    Macv1994  
       2022-06-07 12:26:06 +08:00
    @oneisall8955 再到.bashrc 中配置一个 alias 都不用 ssh 命令了,直接用配置的 alias 名即可。
    MX123
        6
    MX123  
       2022-06-07 15:41:16 +08:00
    学习了
    fateofheart
        7
    fateofheart  
       2022-06-07 17:50:42 +08:00 via Android
    即使是 key 登录,也要使用密码
    julyclyde
        8
    julyclyde  
       2022-06-07 18:07:00 +08:00
    所以,你写了这么长,到底想表达什么?
    lion
        9
    lion  
       2022-06-13 01:28:55 +08:00
    使用私钥登录后,爆破基本无效,安全系数提升很高
    linunix
        10
    linunix  
       2022-06-25 08:45:49 +08:00
    @lion 再换个非 22 端口,美滋滋
    spediacn
        11
    spediacn  
       2022-07-26 09:45:53 +08:00 via iPad
    常用地区的 CIDR 配置上去,防火墙上只能用这个 ip 段登录,一样美滋滋
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2675 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 12:44 · PVG 20:44 · LAX 04:44 · JFK 07:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.