Skip to content

SSH密钥登录服务器

注意

win10系统cmd打开的终端和powershell部分命令不支持。推荐git bash

基本步骤

一、本地生成密钥

shell
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

二、添加本地生成的公钥id_rsa.pub到服务器

shell
# 将.pub公钥粘贴进去退出保存(:wq)
vim ~/.sshauthorized_keys

三、配置服务器快捷登录

  • 原来我们连接服务器操作是: ssh root@xxx.xxx.xxx.xxx

  • 快捷登录操作:ssh xxx [xxx是自定义vps名称]

shell
# vim ~/.ssh/config
# 举例
Host tencent
  HostName 111.111.111.111
  User root
  Port 22
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand connect -S 127.0.0.1:10808 -a none %h %p

字段说明

shell
HostName # 服务器IP地址
User # 登录用户名
Port # 端口号
IdentityFile  # 指定私钥文件(默认~/.ssh/id_rsa)
ProxyCommand connect # -S 表示使用 socks5 代理 || -a none 表示本地代理无需认证 || %h %p 变量分别对应远程主机名和端口

登录服务器:ssh tencent

开启root登录与关闭防火墙

开启root登录

shell
# 切换到root用户
vim /etc/ssh/sshd_config
# 找到PermitRootLogin字段yes
PermitRootLogin yes
# 重启sshd服务 或者 systemctl restart ssh
systemctl restart sshd
# 设置root密码就可以使用 ssh root@ip 登录
passwd root

关闭密码登录

shell
# 切换到root用户
vim /etc/ssh/sshd_config
# 修改以下配置项
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
PubkeyAuthentication yes
# Port 22 默认ssh端口

# 重启sshd服务 或者 systemctl restart ssh
systemctl restart sshd

主流系统防火墙开关

Ubuntu、Debian、centos。只关乎服务器防火墙设置,安全组需要在各个厂商的面板中设置

shell
# Ubuntu 和 Debian 通常使用 ufw(Uncomplicated Firewall)作为防火墙管理工具
ufw status
ufw disable
ufw enable # 启用防火墙

# CentOS 通常使用 firewalld 作为防火墙管理工具
systemctl status firewalld
# 停止服务
systemctl stop firewalld
# 禁用开机启动
systemctl disable firewalld

systemctl start firewalld # 启动防火墙
systemctl enable firewalld # 开机启动防火墙