Linux之ssh免密登录方式汇总

为什么要配置免密:
  • 用脚本实现日常工作的自动化。
  • 增强 Linux 服务器的安全性。
  • 可以比别人提前30分钟下班😄
一、SSH免密登录
  • 本地生成公钥和私钥
ssh-keygen -t rsa -C "youname"
  • 配置本地公钥到服务器
将~/.ssh/id_rsa.pub添加到服务器的~/.ssh/authorized_keys文件中(没有就创建一个)。


注意.ssh文件夹和authorized_keys文件的权限. 
chmod 700 -R .ssh
chmod 600 authorized_keys 
二、expect脚本登录

刚入职现在的公司时,已经有Mac配置免密的文档,但是Windows电脑无法使用该文档进行配置,但是我这个人不想一直输入密码(说白就是爱折腾),于是在网络上一波搜索之后发现了expect命令(Expect是一个用来处理交互的命令),最后花了一点时间写成了脚本自己使用,后续使用到自动上传、下载文件到服务器以及推荐给同事使用😤。下面是一个简单的登录脚本,如果自己公司要通过跳板机才能登录服务器的话,对该脚本进行简单的改造即可使用,希望可以帮到大家。

  • 脚本内容
#!/usr/bin/expect

##################
#### expect.sh ####
##################

#设置需要的参数
set username "name"
set passwd "pwd"
set ip [lindex $argv 0]

#登录服务器
spawn ssh -l $username $ip
expect {
# 第一次登录服务器会有这个提示
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
# 一直与服务器保持连接
interact
  • 执行命令
expect expect.sh ip
三、sshpass脚本登录

sshpass 是一个简单、轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证)。
注意:使用 sshpass 是最不安全的,建议使用ssh免密登录生产环境
1、sshpass安装方式

  • brew安装
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
  • 编译安装
git clone https://github.com/jiaxionglee/sshpass.git
cd sshpass
./configure
make && make install

2、登录命令

# 从文件中读取密码
sshpass -f pwd_office ssh -o "StrictHostKeyChecking no" name@ip
# 直接输入密码,不安全
sshpass -p pwd ssh -o "StrictHostKeyChecking no" name@ip

说明:-o "StrictHostKeyChecking no"用来解决第一次登录服务器时的提示Are you sure you want to continue connecting (yes/no)?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值