一、修改 SSH 服务的端口

  1. 查看 sshd 服务运行状态: systemctl status sshdservice sshd status

  2. 查看 sshd 服务默认监听的端口: netstat -anlp | grep sshd

  3. 修改 sshd 监听端口:打开 sshd 的配置文件 vi /etc/ssh/sshd_config ,将配置文件的端口 22 修改成 10022。

原文件:

  1. # If you want to change the port on a SELinux system, you have to tell
  2. # SELinux about this change.
  3. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
  4. #
  5. #Port 22

修改后:

  1. # If you want to change the port on a SELinux system, you have to tell
  2. # SELinux about this change.
  3. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
  4. #
  5. Port 10022

注意:
针对 CentOS 系统,因为内部集成了 SELinux 系统,所以还需进行如下配置:

semanage port -a -t ssh_port_t -p tcp 10022

如果本机未安装 semanage 指令,则可以先反查哪个安装包提供了 semanage 指令:

yum whatprovides semanage

然后根据提示的安装包名安装指定安装包(复制安装包名称时无需复制版本号):

yum install -y policycoretutils-python

  1. 查看端口是否配置成功: semanage port -l | grep ssh

  2. 重启 sshd 的服务: service sshd restart

  3. 在本机上测试刚才设置的端口号是否生效: ssh -p 10022 root

二、配置无密码登录

  1. 在本地机器上生成公私钥。

    cd ~/.ssh ssh-keygen

  1. 在本地机器的 ~/.ssh 目录下创建名为 config 的配置文件,将如下配置复制到 config 文件中。
    1. Host tx
    2. Port 10092
    3. HostName 49.235.124.65
    4. User root
    5. IdentityFile ~/.ssh/id_rsa
    6. IdentitiesOnly yes

    其中:**
  • IdentityFile: 表示私钥位置;
  • IdentitiesOnly: 指示 ssh 仅使用在命令行上指定的身份验证身份文件或在 ssh_config 文件中配置的身份验证身份文件;
  1. 配置远程服务器 ECS。进入远程服务器 ECS 的 ~/.ssh 目录下,创建文件 authorized_keys。

    cd ~/.ssh touch authorized_keys

将之前本地机器上生成的公钥复制到文件 authorized_keys 中。

  1. 连接远程服务器: ssh tx

注:
若报“ Connection refused”错误,可能有以下几个原因:

  • 看下远程服务器22端口是否有开启,以及相应安全组是否有配置;
  • 查看本地局域网与远程服务器内网IP是否在同一个网段内,要确保二者不在同一网段。