前提说明
-
rundeck:客户端 192.168.172.131
-
jump:是跳板机或者堡垒机 192.168.172.133
-
node:是远程节点 192.168.172.135
rundeck无法直接访问node,需要通过jump跳转
命令详解
jump密钥认证、node密码认证
场景说明
-
node 不支持密钥认证,只能支持用户名密码
-
rundeck 需要知道node用户名和密码
-
跳板机支持密钥认证,分为两种情况,这里两种情况认证模式是一样的【跳板机公钥认证】:
-
情况1:考虑到跳板的authorized_keys
如果不允许放入client的rundeck_id_rsa.pub的公钥,麻烦了点 -
此时rundeck需要拥有jump的私钥,将jump的私钥拷贝到rundeck中
-
jump的authorized_keys中需要加入jump自身的公钥
-
情况2:考虑到跳板的authorized_keys
如果允许放入client的rundeck_id_rsa.pub的公钥 -
jump的authorized_keys中需要加入rundeck的公
认证原理
+----------------+ +-------------------+ +-----------------+
| | SSH | | SSH | |
| Rundeck +------------>| JUMP +------------>| Node |
| | | | | |
+----------------+ +-------------------+ +-----------------+
Rundeck主机 Jump主机(需有公钥认证) 节点机器主机(用户密码认证)
实现方案
命令:sshpass -f <目标主机密码文件> ssh -q -oClearAllForwardings=yes -p 目标主机端口 -F <ssh_config文件> 目标主机用户名@目标主机名
这里实现方案是针对情况2的实现
jump机器的操作
###第一步:在店创建一个 ssh 用户,这里是使用root
###第二步:生成密钥对
[root@localhost ~]# ssh-keygen
。。。。。
[root@localhost ~]# ll /root/.ssh/
总用量 32
-rw-r--r--. 1 root root 1573 7月 22 21:19 authorized_keys
-rw-r--r--. 1 root root 26 7月 19 10:30 config
-rw-------. 1 root root 1675 7月 19 10:57 id_rsa
-rw-r--r--. 1 root root 408 7月 19 10:57 id_rsa.pub
-rw-r--r--. 1 root root 177 7月 16 21:26 known_hosts
###第三步:将自己的公钥附加到authorized_keys
[root@localhost ~]# cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
###第三步:将自己的私钥远程到拷贝到Rundeck服务器中
[root@localhost ~]# scp /root/.ssh/id_rsa root@192.168.172.131:/home/rundeck/jump/192.168.172.133_id_rsa
rundeck机器的操作
[root@davytestcentos jump]# sshpass -f /home/rundeck/jump/NODE_SSH_PASS_FILE ssh -q -oClearAllForwardings=yes -p 22 -F /home/rundeck/jump/jump_key_ssh_config root@192.168.172.135
Last login: Sun Jul 16 21:36:55 2023 from 192.168.172.133
[root@davytestcentos jump]# cat /home/rundeck/jump/jump_key_ssh_config
Host *
StrictHostKeyChecking no
ProxyCommand ssh -i /home/rundeck/jump/192.168.172.133_id_rsa root@192.168.172.133 -W %h:%p
[root@davytestcentos jump]# cat /home/rundeck/jump/NODE_SSH_PASS_FILE #目标主机密码
123456
jump密钥认证、node密钥认证
场景说明
-
node 支持密钥认证
-
rundeck 需要知道私钥
-
node的authorized_keys中需要加入自身的公钥
-
跳板机支持密钥认证,分为两种情况,这里两种情况认证模式是一样的【跳板机公钥认证】:
-
情况1:考虑到跳板的authorized_keys
如果不允许放入client的rundeck_id_rsa.pub的公钥,麻烦了点 -
此时rundeck需要拥有jump的私钥,将jump的私钥拷贝到rundeck中
-
jump的authorized_keys中需要加入jump自身的公钥
-
情况2:考虑到跳板的authorized_keys
如果允许放入client的rundeck_id_rsa.pub的公钥 -
jump的authorized_keys中需要加入rundeck的公钥
认证原理
+----------------+ +-------------------+ +-----------------+
| | SSH | | SSH | |
| Rundeck +------------>| JUMP +------------>| Node |
| | | | | |
+----------------+ +-------------------+ +-----------------+
服务端主机 跳板机主机(需有公钥认证) 节点机器主机(需有公钥认证)
实现方案
命令:ssh -q -oClearAllForwardings=yes -p 目标主机端口 -F <ssh_config文件> -i <目标主机私钥文件> 目标主机用户名@目标主机名
node机器的操作
###第1步:将自己的公钥附加到authorized_keys
[root@localhost ~]# cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
###第2步:将自己的私钥远程到拷贝到Rundeck服务器中
[root@localhost ~]# scp /root/.ssh/id_rsa root@192.168.172.131:/home/rundeck/jump/192.168.172.135_id_rsa
jump机器的操作
###第1步:将自己的公钥附加到authorized_keys
[root@localhost ~]# cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
###第2步:将自己的私钥远程到拷贝到Rundeck服务器中
[root@localhost ~]# scp /root/.ssh/id_rsa root@192.168.172.131:/home/rundeck/jump/192.168.172.133_id_rsa
rundeck机器的操作
[root@davytestcentos jump]# ssh -q -oClearAllForwardings=yes -p 22 -F /home/rundeck/jump/jump_key_ssh_config -i /home/rundeck/jump/192.168.172.135_id_rsa root@192.168.172.135
Last login: Sun Jul 16 21:52:46 2023 from 192.168.172.133
[root@davytestcentos jump]# cat /home/rundeck/jump/jump_key_ssh_config
Host *
StrictHostKeyChecking no
ProxyCommand ssh -i /home/rundeck/jump/192.168.172.133_id_rsa root@192.168.172.133 -W %h:%p
jump密码认证、node密码认证
场景说明
-
jump 只能支持用户密码,node只能支持用户名密码
-
rundeck 需要知道jump用户名和密码
-
rundeck 需要知道node用户名和密码
认证原理
+----------------+ +-------------------+ +-----------------+
| | SSH | | SSH | |
| Rundeck +------------>| JUMP +------------>| Node |
| | | | | |
+----------------+ +-------------------+ +-----------------+
Rundeck主机 Jump主机(用户密码认证) 节点机器主机(用户密码认证)
实现方案
命令:sshpass -f <跳板机密码文件> ssh -q -oClearAllForwardings=yes -p 目标主机端口 -F <ssh_config文件> 目标主机用户名@目标主机名
rundeck机器的操作
[root@davytestcentos jump]# sshpass -f /home/rundeck/jump/NODE_SSH_PASS_FILE ssh -q -oClearAllForwardings=yes -p 22 -F /home/rundeck/jump/jump_pass_ssh_config root@192.168.172.135
Last login: Sun Jul 16 21:14:49 2023 from 192.168.172.133
[root@davytestcentos jump]# cat /home/rundeck/jump/jump_pass_ssh_config
Host *
StrictHostKeyChecking no
Port 22
ProxyCommand sshpass -f /home/rundeck/jump/JUMP_SSH_PASS_FILE ssh -p 22 root@192.168.172.133 -W %h:%p
[root@davytestcentos jump]# cat /home/rundeck/jump/JUMP_SSH_PASS_FILE #跳板机密码
123456
[root@davytestcentos jump]# cat /home/rundeck/jump/NODE_SSH_PASS_FILE #目标主机密码
123456
这些只是一些测试命令,设计上欠缺了点
##简单命令
ssh -o ProxyCommand="ssh -W %h:%p root@192.168.172.133" root@192.168.172.135
##增加环境变量设置
env SSHPASS="跳板机密码" sshpass -d 123 ssh -o StrictHostKeyChecking=no -o ProxyCommand="sshpass -e ssh -o StrictHostKeyChecking=no 跳板机用户@跳板机主机 -W %h:%p" 目标主机用户@目标主机名 123<<<目标主机密码
##测试命令
env SSHPASS="123456" sshpass -d 123 ssh -o StrictHostKeyChecking=no -o ProxyCommand="sshpass -e ssh -o StrictHostKeyChecking=no root@192.168.172.133 -W %h:%p" root@192.168.172.135 123<<<123456
jump密码认证、node密钥认证
场景说明
-
node 支持密钥认证
-
rundeck 需要知道私钥
-
node的authorized_keys中需要加入自身的公钥
认证原理
+----------------+ +-------------------+ +-----------------+
| | SSH | | SSH | |
| Rundeck +------------>| JUMP +------------>| Node |
| | | | | |
+----------------+ +-------------------+ +-----------------+
服务端主机 跳板机主机(需有用户名密码) 节点机器主机(需有公钥认证)
实现方案
命令:ssh -q -oClearAllForwardings=yes -p 目标主机端口 -F <ssh_config文件> -i <目标主机私钥文件> 目标主机用户名@目标主机名
node机器的操作
###第1步:将自己的公钥附加到authorized_keys
[root@localhost ~]# cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
###第2步:将自己的私钥远程到拷贝到Rundeck服务器中
[root@localhost ~]# scp /root/.ssh/id_rsa root@192.168.172.131:/home/rundeck/jump/192.168.172.135_id_rsa
rundeck机器的操作
[root@davytestcentos jump]#ssh -q -oClearAllForwardings=yes -p 22 -F /home/rundeck/jump/jump_pass_ssh_config -i /home/rundeck/jump/192.168.172.135_id_rsa root@192.168.172.135
Last login: Sun Jul 16 21:14:49 2023 from 192.168.172.133
[root@davytestcentos jump]# cat /home/rundeck/jump/jump_pass_ssh_config
Host *
StrictHostKeyChecking no
ProxyCommand sshpass -f /home/rundeck/jump/JUMP_SSH_PASS_FILE ssh -p 22 root@192.168.172.133 -W %h:%p
[root@davytestcentos jump]# cat /home/rundeck/jump/JUMP_SSH_PASS_FILE #跳板机密码
123456