批量ssh免密认证和改名


 

root@ubuntu:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu
10.0.0.12 dev
10.0.0.13 gitlab
10.0.0.14 jenkins-master
10.0.0.15 jenkins-slave
10.0.0.16 k-and-h
10.0.0.17 harbor
10.0.0.18 web
   




root@ubuntu:~# cat  ssh.sh 
#!/bin/bash
# -----------------------------------
# 作者: dzx
# 日期: 20220408
# 联系: 别想着我会主动联系你!!!
# -----------------------------------
# 设置环境变量
USER_NAME='root'
USER_HOME="/${USER_NAME}/.ssh"
SSH_CONFIG_FILE='/etc/ssh/ssh_config'
USER_PASSWD='123456'
HOSTADDR_PRE='10.0.0'
SUB_RANG='12..18'
HOST_LIST=$(eval echo $HOSTADDR_PRE.{$SUB_RANG})
HOSTNAME_LIST='dev gitlab jenkins-master jenkins-slave k-and-h harbor web'
HOSTS_FILE='/etc/hosts'
# 准备基本环境
base_env(){
 apt install expect -y
 [ -d ${USER_HOME} ] && rm -rf ${USER_HOME}
 ssh-keygen -t rsa -P "" -f ${USER_HOME}/id_rsa
 sed -i '/ask/{s/#/ /; s/ask/no/}' ${SSH_CONFIG_FILE}
}
# expect自动化交互过程
expect_auto(){
 remote_host=$1
 expect -c "
   spawn ssh-copy-id -i ${USER_HOME}/id_rsa.pub $1
expect {
     \"*yes/no*\" {send \"yes\r\"; exp_continue}
     \"*password*\" {send \"$USER_PASSWD\r\"; exp_continue}
     \"*Password*\" {send \"$USER_PASSWD\r\";}
   } "
}
# 跨主机免认证环境
auth_auto(){
 for i in ${HOST_LIST} ${HOSTNAME_LIST}
 do
   expect_auto ${USER_NAME}@$i
   scp -rp ${HOSTS_FILE} ${USER_NAME}@$i:${HOSTS_FILE}
 done
}
# 设定主机名
hostname_set(){
 for i in ${HOSTNAME_LIST}
 do
   ssh ${USER_NAME}@$i "hostnamectl set-hostname $i"
 done
}
# 主函数执行
main(){
 # 基本环境准备
 base_env
 # 跨主机免密认证
 auth_auto
 # 设定主机名
 hostname_set
}
# 执行主函数
main
#注意:遍历主机ip地址的列表,最好用eval提前将变量解析一下,这里最好将localhost加上去,因为当我们在进行集群初始化的时候,有限解析本地的主机名用的是127.0.0.1 或localhost


sh ssh.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,JGit使用ssh免密认证需要进行以下几个步骤: 1. 生成ssh公钥和私钥 您可以在本地使用ssh-keygen命令生成ssh公钥和私钥,例如: ``` ssh-keygen -t rsa -C "your_email@example.com" ``` 这里的“your_email@example.com”是您的邮箱地址,执行命令后,系统会提示您输入保存密钥对的文件名及密码等信息。 2. 将公钥添加到git服务器上 将生成的公钥添加到Git服务器上的authorized_keys文件中,这里以GitHub为例,进入GitHub网站,点击右上角头像,选择“Settings”,在左侧菜单栏中选择“SSH and GPG keys”,点击“New SSH key”,将生成的公钥复制到Key文本框中,点击“Add SSH key”按钮即可。 3. 在JGit中使用ssh协议克隆代码库 在JGit中使用ssh协议克隆代码库时,需要设置ssh协议的URL,例如: ``` git@github.com:your_username/your_repository.git ``` 这里的“your_username”是您的GitHub用户名,“your_repository”是您的代码库名称,您也可以将这个URL放到URI对象中,然后通过CloneCommand对象进行克隆操作。在克隆之前,您需要设置JschConfigSessionFactory对象,该对象是用于创建JschSession对象的工厂,您可以在其中设置ssh私钥和密码等信息。 代码示例: ``` String gitUrl = "git@github.com:your_username/your_repository.git"; String privateKey = "/path/to/your/private_key"; String passphrase = "your_passphrase"; // 设置JschConfigSessionFactory JschConfigSessionFactory sessionFactory = new JschConfigSessionFactory() { @Override protected void configure(Host hc, Session session) { // 设置ssh私钥 JschSession jschSession = (JschSession) session; jschSession.setConfig("StrictHostKeyChecking", "no"); jschSession.setIdentity(privateKey, passphrase); } }; // 克隆代码库 Git.cloneRepository() .setURI(gitUrl) .setTransportConfigCallback(transport -> { SshTransport sshTransport = (SshTransport) transport; sshTransport.setSshSessionFactory(sessionFactory); }) .setDirectory(new File("/path/to/your/local/repository")) .call(); ``` 希望以上信息能够帮助到您。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值