管理SSH主机和私钥的最佳方法

时间:2019-05-19 01:25:36  来源:igfitidea点击:

作为系统管理员,我们经常要处理多个远程系统。
我们需要在工作期间多次SSH系统。
我们可以通过密码访问许多远程Linux服务器,其中许多可以通过私钥访问。
所以这是更典型的管理方式。

本文将正确地组织使用关键文件的ssh服务器细节。

配置文件语法:

我们可以向 ~/.ssh/config文件添加多个ssh主机信息。

编辑配置文件。

$ vi ~/.ssh/config  

语法如下所示。

Host <NICK_NAME>
     HostName <IP ADDRESS OF REMOTE>
     IdentityFile <PATH TO PRIVATE FILE>
     User <LOGIN AS USERNAME>
     Port <SSH PORT TO USE>
     LocalForward <LOCAL PORT>  <REMOTE_LOCATION:PORT>

1. 添加第一台SSH主机

例如,我们的第一个SSH主机运行PHP开发web服务器,其中名称为php-web1,用户名root,端口22,可以通过密码访问。
在配置文件中添加以下内容。

Host php-web1
     HostName 192.168.1.100
     User root

现在尝试使用SSH执行以下命令。

$ ssh php-web1

2. 添加第二台SSH主机

我们的第二台主机服务器(php-web2)可以通过用户根端口22上的ssh密钥对访问。
在配置文件中添加以下内容。

Host php-web2
     HostName  192.168.1.101
     IdentityFile ~/.ssh/php-web2.pem
     User root

执行以下命令

$ ssh php-web2

3. 添加第三台SSH主机

我们的第三个ssh主机服务器(php-db1)运行在端口2222上,可以通过用户ubuntu的密钥对访问。
在配置文件中添加以下内容。

Host php-db1
     HostName 192.168.1.110
     Port 2222
     IdentityFile ~/.ssh/php-db1.pem
     User ubuntu

现在尝试使用SSH执行以下命令。

$ ssh php-db1

4. 用SSH配置转发

在这种设置中,我们需要将本地系统端口3306转发到端口3306上的远程服务器(php-db1)主机。
在配置文件中添加以下内容。

Host php-db1-mysql-tunnel
     HostName 192.168.1.110
     Port 2222
     IdentityFile ~/.ssh/php-db1.pem
     LocalForward 3306 127.0.0.1:3306

执行以下命令

$ ssh php-db1-mysql-tunnel

最终的配置文件

我们最终的配置文件 ~/.ssh/config如下所示。

Host php-web1
     HostName 192.168.1.100
     User root

Host php-web2
     HostName  192.168.1.101
     IdentityFile ~/.ssh/php-web2.pem
     User root

Host php-db1
     HostName 192.168.1.110
     Port 2222
     IdentityFile ~/.ssh/php-db1.pem
     User ubuntu

Host php-db1-mysql-tunnel
     HostName 192.168.1.110
     Port 2222
     IdentityFile ~/.ssh/php-db1.pem
     LocalForward 3306 127.0.0.1:3306