ssh密钥创建分发(端口号非22)&脚本实现自动创建分发密钥

1.1 服务端端口号变化了,如何基于秘钥连接

1.1.1 环境准备

实验环境:

[root@test ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)

将一台服务器的ssh服务端口修改为63389

[root@test ~]# netstat -lntup|grep sshd
tcp        0      0 0.0.0.0:63389  0.0.0.0:*         LISTEN      5083/sshd
tcp        0      0 :::63389         :::*              LISTEN      5083/sshd   

1.1.2 通过另外一台服务器创建并分发密钥

第一个里程碑: 现创建密钥使用 ssh-keygen

[root@backup ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #指定密钥对的保存路径
Enter passphrase (empty for no passphrase):        #为密钥对创建密码
Enter same passphrase again:                          #确认为密钥对创建的密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup
The key's randomart image is:
+--[ RSA 2048]----+     #2048表示加密的位数为2048位
|        o.==.      |
|       o =+.       |
|      .  .+        |
|     . . .         |
|      o S           |
|     . o ..        |
|  . E . .o         |
|   = . oo           |
|    o..o.           |
+-----------------+

第二个里程碑:分发密钥,注意ssh的端口

[root@backup ~]# ssh-copy-id  -i ~/.ssh/id_rsa.pub "-p63389 172.16.1.250"
The authenticity of host '[172.16.1.250]:63389 ([172.16.1.250]:63389)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.1.250]:63389' (RSA) to the list of known hosts.
root@172.16.1.250's password:
Now try logging into the machine, with "ssh '-p63389 172.16.1.250'", and check in:

  .ssh/authorized_keys   #分发到对端服务器后进行改名

to make sure we haven't added extra keys that you weren't expecting.

说明:

   通过 man 手册找到密钥分发的命令格式。

   -i 参数指定 公钥文件的存放位置

[use@]表示使用的用户,默认使用当前登陆的用户

-p 指定端口,主要要在双引号之间(通过cat `which ssh-copy-id` 命令脚本内容得知)

[root@backup ~]# man ssh-copy-id

Formatting page, please wait...

SSH-COPY-ID(1)                                                  SSH-COPY-ID(1)

NAME

       ssh-copy-id  -  install  your  public  key in a remote machine's autho-

       rized_keys

SYNOPSIS

第三个里程碑: 测试密钥登陆

[root@backup ~]# ssh 172.16.1.250 -p 63389
Last login: Wed Oct 18 15:42:05 2017 from 10.0.0.41

[root@test ~]#

1.2 如何实现自动创建秘钥对,同时分发公钥(编写脚本实现)

脚本内容:

[root@m01 ~]# vim /server/scripts/piliang_fenfa.sh
  1 #!/bin/bash
  2
  3 #make key
  4 \rm -f /root/.ssh/id_dsa
  5 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
  6
  7 #fengfagongyao
  8 for ip in 8 31 41
  9 do
 10 echo ====fenfa key to host 172.16.1.$ip====
 11 sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
 12 echo ===============fenfa end==============
 13 echo ""
 14 done

脚本说明:

   ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q

   创建密钥,-f指定存放位置,-P 密钥加密的密码  -q 减少信息输出

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"

   这里需要安装一个软件 yum install sshpass -y 用来提供中户密码

ssh-copy-id 命令来分发密钥 -i 指定密钥本地存放的路径

-o StrictHostKeyChecking=no 在登陆其他服务器是不选择yes/no

for ip in 8 31 41

   这里使用for循环来对ip地址进行变化。

附录:CentOS 7密钥分发脚本

 1 #!/bin/bash
 2 . /etc/rc.d/init.d/functions
 3
 4 yum install sshpass -y  >/dev/null
 5 # 创建密钥
 6 \rm ~/.ssh/id_rsa* -f
 7 ssh-keygen -t rsa -f ~/.ssh/id_rsa -N "" -q
 8 # 分发公钥
 9 for ip in 61 21 51 31 41 8 7 9 5 6
10 do
11 sshpass -p123456 ssh-copy-id -o "StrictHostKeyChecking no"  -i /root/.ssh/id_rsa.pub 172.16.1.$ip &>/dev/null
12 if [ $? -eq 0 ];then
13 action  "fenfa 172.16.1.$ip"  /bin/true
14 else
15 action  "fenfa 172.16.1.$ip"  /bin/false
16 fi
17 echo ""
18 done

                              本文出自“惨绿少年”,欢迎转载,转载请注明出处!http://blog.znix.top   

 

时间: 2024-09-27 07:26:22

ssh密钥创建分发(端口号非22)&脚本实现自动创建分发密钥的相关文章

platform型设备在/dev目录下自动创建设备节点的分析【转】

转自:http://blog.csdn.net/rockrockwu/article/details/7357648 系统启动过程中platform设备.驱动注册完毕,为什么在/dev目录下就自动创建好设备节点了? 在/dev目录自动创建设备节点可以通过class_create(),然后再device_create().但是在跟踪 内核platform注册过程中可以发现,其实这里面并未调用上诉两个函数,那么platform注册后 如何在/dev目录下创建设备文件节点?     [cpp] vie

CentOS7增加或修改SSH端口号

1.先查看下服务器端口号范围 [root@localhost ~]# sysctl -a | grep ip_local_port_range 显示:net.ipv4.ip_local_port_range = 32768 60999 新ssh端口号选择在这个范围内即可,如54321 2.修改SSH配置文件 [root@localhost ~]# vim /etc/ssh/sshd_config 找到"#Port 22",复制该行到下一行,然后把两行的"#"号即注释

Ubuntn 14.04 SSH客户端和服务端的安装和配置

1.安装服务端 sudo apt-get install openssh-server   2.安装客户端   sudo apt-get install openssh-client   3.启动服务   sudo server ssh start    //开启 sudo server ssh stop     //停止 sudo server ssh restart  //重启 sudo server ssh status   //状态   4.服务端配置   SSH服务器的配置使用的是"/

Linux 查看服务器开放的端口号

在讨论这个问题前,我们先来了解一下物理端口.逻辑端口.端口号等计算机概念.   端口相关的概念:   在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型.物理端口指的是物理存在的端口,如ADSL Modem.集线器.交换机.路由器上用 于连接其他网络设备的接口,如RJ-45端口.SC端口等等.逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等.由于物理端口和逻辑端口数量较多,

c# UDP 如何获取发送数据方的端口号

问题描述 大神们,帮个忙,新手很纠结啊我在一个form1里同时接收其他两个form1传来的数据,分别进行显示,用的是UDP,但是我不能知道某一个数据是谁传来的,那两个form1的端口号我设置的是7000和8000,接收的是6000,我怎么能获取发送端的端口号,不知道我表达清楚了没,刚开始编c#,请多加指教 解决方案 解决方案二:接收的时候会传入一个remoteEP的((IPEndPoint)remoteEP).Port 解决方案三:能给段程序不?我现在提取出来的是随机的端口,不是我指定的.解决方

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.9 端口号

2.9 端口号 任何时候,多个进程可能同时使用TCP.UDP和SCTP这3种传输层协议中的任何一种.这3种协议都使用16位整数的端口号(port number)来区分这些进程. 当一个客户想要跟一个服务器联系时,它必须标识想要与之通信的这个服务器.TCP.UDP和SCTP定义了一组众所周知的端口(well-known port),用于标识众所周知的服务.举例来说,支持FTP的任何TCP/IP实现都把21这个众所周知的端口分配给FTP服务器.分配给简化文件传送协议(Trivial File Trq

http preview端口号-Http preview服务器端口号修改

问题描述 Http preview服务器端口号修改 使用MyEclipse创建Http PreView静态服务器,可加载 static Web Module项目使用中出现了一个问题无法解决,端口号默认8080,无法更改端口号,不知道社区的朋友们有没有用过的,指点一二 (和tomcat冲突很苦恼) 解决方案 解决方式如下: 已于公司的同事讨论解决,最后采用tomcat服务器.部署自建项目下文件访问,配置端口号.避免冲突问题 解决方案二: 修改jetty服务器端口号修改JBOSS服务器的端口号修改h

linux(Ubuntu)搭建Subversion服务器+修改svn端口号

一.搭建 Subversion 服务器 1.首先需要安装 subversion 这个软件: sudo apt-get install subversion 注:使用apt-get安装软件,ubuntu默认将软件下载到 /etc/bash_completion.d/ 目录下,可使用 sudo apt-get source packagename 下载源码包,也是下载到 /etc/bash_completion.d/下. 2.在 /home/nicky 下建立一个 repo,名称为 svnproje

关于websphere发布的问题?我想发布多个应用,怎么改发布的端口号啊?

问题描述 关于websphere发布的问题?我想发布多个应用,怎么改发布的端口号啊?请高手指点一下还有第一次发布的时候,我怎么知道端口号是多少啊? 解决方案 解决方案二:在同一个端口上也可以发布多个应用,如果你一定要发布在不同的端口,你估计需要创建多个不同的applicationserver.websphere默认的应用端口是9080,你也可以通过查看Applicationservers>server1>Ports中的WC_defaulthost端口号即知.解决方案三:自定义发布的时候可以选择