使用证书登陆有助于保护服务器的安全, 配置好之后, 一定要先测试下, 然后关闭密码登陆, 要是自己都进不去了, 就尴尬了。
参考文章 ssh-证书登陆
ssh服务器配置
修改sshd配置文件
配置文件默认存放在
/etc/ssh/sshd_config, 如果找不到可以使用whereis ssh, 来查找与ssh相关的目录, 使用vi /etc/ssh/sshd_config来编辑此文件
Port 22 # 默认值22, 建议自定义Protocol # //默认值2, 不建议1PermitRootLogin no # 禁止使用root账户通过ssh登陆PermitEmptyPasswords no # 禁止使用空密码登陆, 默认no#AllowUsers user1 user2AllowGroups ssh-group #允许ssh登陆的用户或者组,建议使用组, 方便管理#不让 sshd 去检查用户目录或某些重要档案的权限数据,这是为了防止用户将某些重要档案的权限设错。例如用户的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登录。StrictModes no # 默认yes#允许用户自行使用成对的密钥系统登录服务器,这里仅针对协议版本 2。用户自己生成的公钥数据就放置于相应的(服务器上该用户自己的)用户目录(例如,/home/luser1)下的 .ssh/authorized_keys 文件里面,RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile %h/.ssh/authorized_keys# HostKeys for protocol version 2 , 根据不同的算法, 保存不同的key到相应的文件HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_keyHostKey /etc/ssh/ssh_host_ecdsa_keyHostKey /etc/ssh/ssh_host_ed25519_key#禁用密码登录方式(不禁用密码登录的时候也可以同时用证书登录;可先不禁用,以防止自己把自己关在服务器外面了),PasswordAuthentication noChallengeResponseAuthentication no# 日志等级, 默认info, 记录基础信息, 可以使用下面的, 记录更加详细LogLevel VERBOSE# 允许使用 SFTP 子系统(FileZilla 要用这个)Subsystem sftp /usr/local/ssh/libexec/sftp-server#AuthorizedKeysFile %h/.ssh/authorized_keys, 在每个用户名下创建这个文件。将公钥放入
附加
- 创建组, 并添加组内用户
# groupadd ssh-group
# usermod -a -G ssh-group <username>
给用户添加public-key
mkdir ~/.ssh && cd ~/.ssh && touch authorized_keys cat user_id_rsa.pub >> authorized_keysssh登陆
ssh -i /path/to/private_key/id_rsa luser1@<ssh_server_ip>- 生成证书
- Linux
ssh-keygen, 一路回车就好了, 然后cd ~/.ssh, 去查看生成的证书, 并将id_rsa.pub给服务器管理员 - windows , 借用gitbash我们也可以使用
ssh-keygen, 这个命令, 基本与上面相同
- Linux
验证成功之后
成功之后, 就可以直接关闭密码登陆了。
如果是使用gitbash登陆的话, 为了方便登陆, 而不是每次输入指令,可以设置一个别名(alias),
vi ~/.bashrc #加入下面这句话, raye 可以替换成自己想要的名字, -i后面是私钥路径 ,后面就是通用的了
# 等号两边不要有空格, 然后就可以使用 raye, 直接登陆服务器了。
alias raye='ssh -i ~/.ssh/id_rsa raye@192.168.1.148'
