其中,Key comment 是用来给这个公钥做个注释的,比如上面的 rsa-key-20151019 就是。这个东西不是公钥本身的一部分,可以根据需要修改,比如用自己的邮箱地址替换。
保存密钥(Save private key)前可输入或者不输入密码短语(Key passphrase)。当然安全的做法是使用。Key passphrase 和它下面的 Confirm passphrase 就是前面提到的保护私钥的密码短语了。最好是大小写字母混合数字,并加入特殊字符如 ! " £ $ % ^ 等。如果不输入密码短语而直接保存私钥,会有让确认的提示。注意是“短语”,也就是可以是一串长长的话。但是使用现成的文本可能会在暴力尝试下被破解。
2. SSH 服务器配置服务器上一般使用 OpenSSH 提供 SSH 登录服务。CentOS(其他 Linux 发行版可能会有不同) 上的服务器配置文件保存在,
/etc/ssh/sshd_config修改此文件,
# vim /etc/ssh/sshd_config配置示例(这里拆成行或块来说明):
注:SSH 默认的配置文件里很多行都被注释掉了(即不起作用,标志是行首有个 # 号),要让它起作用就要把 # 删除。
端口,默认 22,建议自定义,
Port 2222如果没有特殊原因,不要用协议 1,
Protocol 2禁止 Root 账户登录,
PermitRootLogin no不允许空密码登录,默认已经是 no,
PermitEmptyPasswords no允许 SSH 登录的用户名/用户组。
#AllowUsers user1 user2 AllowGroups ssh-users使用用户组的好处是在更换用户、添加/删除用户的时候都需要维护此配置。所以建议用用户组来管理,有新用户产生,直接将它添加到这个附加用户组中就可以了。
将用户添加到附加用户组。简单说就是,
# groupadd ssh-user # usermod -a -G ssh-user <username>不让 sshd 去检查用户目录或某些重要档案的权限数据,这是为了防止用户将某些重要档案的权限设错。例如用户的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登录。
StrictModes no允许用户自行使用成对的密钥系统登录服务器,这里仅针对协议版本 2。用户自己生成的公钥数据就放置于相应的(服务器上该用户自己的)用户目录(例如,/home/luser1)下的 .ssh/authorized_keys 文件里面,
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys保存 protocol version 2 对应的服务器自己的 KEY,不同类型的 key 保存到不同的文件中(这里只启用前面提到的两种),
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 HostKey /etc/ssh/ssh_host_ed25519_key HostKey /etc/ssh/ssh_host_rsa_key因为启用了 diffie-hellman-group-exchange-sha256 这个密钥交换算法,还需要修改 /etc/ssh/moduli 以增强其安全性。如果有这个文件(一般安装时都会有的),将此文件中的所有第 5 列数值小于 2000 的行删除。因为行比较多,用 awk 指令自动删除比较方便,
# awk '$5 > 2000' /etc/ssh/moduli > "${HOME}/moduli" # wc -l "${HOME}/moduli" # 确保删除之后该文件中还有内容,看此指令输出的数字大于 0 # mv "${HOME}/moduli" /etc/ssh/moduli如果没有这个文件,就生成一个,
# ssh-keygen -G /etc/ssh/moduli.all -b 4096 # ssh-keygen -T /etc/ssh/moduli.safe -f /etc/ssh/moduli.all # mv /etc/ssh/moduli.safe /etc/ssh/moduli # rm /etc/ssh/moduli.all生成这个可能需要的时间比较长。
禁用密码登录方式(不禁用密码登录的时候也可以同时用证书登录;可先不禁用,以防止自己把自己关在服务器外面了),
PasswordAuthentication no ChallengeResponseAuthentication no禁止图形界面转发及 TCP 转发,
#AllowTcpForwarding no #X11Forwarding no要求记录详细日志,
LogLevel VERBOSE允许使用 SFTP 子系统(FileZilla 要用这个),
Subsystem sftp /usr/local/ssh/libexec/sftp-server 3. 在服务器上加入用户公钥在 1. 中生成的用户的公钥需要经由系统管理员导入服务器上的 SSH 的信任证书列表里面。SSH 服务器会自动根据用户登录服务器使用的用户名到服务器上相应的用户目录里的 .ssh/authorized_keys 文件里寻找公钥。
例如,要将前面 rsa 制式的公钥(咱给他保存成 id_rsa.save 吧)(注意与 PuTTYgen 保存的 id_rsa.pub 的不同,如果错了会有 Server refused our key 的错误提示,因为 pubkey 不正确)放入用户 luser1 的证书列表中,可以,
# mkdir /home/luser1/.ssh # touch /home/luser1/.ssh/authorized_keys # cat id_rsa.save >> /home/luser1/.ssh/authorized_keys #然后就可以删除 id_rsa.pub 这个文件了。