前言
为了安全起见,公司服务器只给开放了一个ssh端口其他服务器通过跳板机登录,这样难免会造成一些不便,但是ssh总体还比较强大,可以通过配置,方便容易的进行登录。
也可以通过端口转发访问内网指定端口,总体来说比较方便。
配置ssh免密登录
1.指定使用rsa算法生成公钥
# 其中rsa表示密码算法,执行下面命令会在~/.ssh目录下生成公钥
ssh-keygen -t rsa
2.将公钥拷贝到指定服务器对应位置
拷贝过程中会提示需要输入服务器的密码,输入正确密码即可拷贝成功。
# 下面命令将ssh公钥拷贝到master服务器的root用户下
ssh-copy-id root@master
这个时候公钥文件内容会追加写入到master服务器,root用户的 .ssh/authorized_keys 文件中,可以使用cat .ssh/id_rsa.pub命令查看。
3.如果登录有问题,可能是服务器~/.ssh目录权限有问题。
配置ssh快速登录
正常情况下,如果ssh端口为22,没有跳板机,配置了上一节免密登录的情况下,要登录master服务器只需要输入 ssh master 即可快速登录服务器,但是如果ssh不是默认的22,并且有跳板机的情况就需要输入一大堆命令才能登录到指定服务器。因此我们可以配置~/.ssh目录下的config文件,实现ssh快速登录。
1.在~/.ssh目录下执行 vim config 命令创建config文件
2. 编写如下配置,需要注意的是,下面配置的服务器都已经配置过第一节中提到的免密登录了。
# 跳板机相关信息(需要首先配置对跳板机的免密登录),其中Host字段为给该服务器起的别名
Host jump
# 跳板机ip
HostName 58.12.11.8
Port 22222
User jump_user
IdentityFile ~/.ssh/id_rsa
# 要登录的服务器1(需要首先配置对跳板机的免密登录)
Host node1
# 服务器1的ip
HostName 192.168.1.1
Port 22220
User root
# 指定跳板机
ProxyJump jump
IdentityFile ~/.ssh/id_rsa
# 要登录的服务器2(需要首先配置对跳板机的免密登录)
Host node2
# 服务器2的ip
HostName 192.168.1.2
Port 22221
# 指定跳板机
User root
ProxyJump jump
IdentityFile ~/.ssh/id_rsa
3.使用ssh jump可以直接登录跳板机,同理ssh node1/ssh node2也可以登录到对应的需要跳板机的服务器。
4.配置结束以后还可以直接使用scp等命令拷贝文件,如: scp ./aaa.txt root@node1:/root,可以将本地的aaa.txt文件拷贝到node1服务器的/root目录下。像rsync等命令也可以使用。
5.如果在ssh 进行登录的时候报错Bad owner or permissions on .ssh/config,需要修改文件权限:sudo chmod 600 .ssh/config
ssh端口转发
如果只暴露了一个ssh端口,如何访问内网的web端口,MySQL等端口呢?
ssh提供了一个命令可以实现端口转发
# 2333表示本机要映射的端口,node1表示要访问的服务器,21018表示node1服务器要映射出来的端口。root表示node1服务器的用户
ssh -L 2333:node1:21018 root@node1
进行上述端口转发以后,访问本机的localhost:2333就可以访问到node1服务器上的21018服务了。
访问MySQL同样的道理,但是如果仅仅是使用Navicat连接MySQL服务器的话,可以通过配置跳板机直接连