设置ssh无密码登录linux服务器的方法
每次登录测试服务器,ssh登录总是需要输入密码。登录的少还行,登录的多了,多一行命令都是多余的。
rsa认证登录方式
制作密钥对
在客户端(本地机器)终端下输入以下命令
ssh-keygen -t [rsa|dsa]
rsa和dsa代表不同的算法
例如:
ssh-keygen -t rsa
一直回车就对了(不用设置密码)
将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub(如果用dsa则生成id_dsa,id_dsa.pub)
生成位置在/root/.ssh/文件夹下(我用的是root用户所以在root下,生成过程会有提示文件位置)
.ssh 是隐藏文件夹 使用 ls -a查看
将公钥放到服务器指定位置
方法一、直接复制
1、将公钥复制到服务器的root用户下的.ssh文件夹(用哪个用户登录就复制到哪个用户下的.ssh文件夹下)
scp /root/.ssh/id_rsa.pub root@172.16.0.164:/root/.ssh/
2、安装公钥
登录到服务器cd /root/.ssh/
cat id_rsa.pub >> authorized_keys
方法二、使用ssh-copy-id命令复制(推荐)
一个命令直接就ok了
ssh-copy-id root@172.16.0.164
验证
不用输入密码则成功,否则失败
ssh root@172.16.0.164
注意事项
上面操作测试过是没有问题的
linux的版本和使用的用户不同会有差别的。
如果出现问题可以考虑以下两点
1、id_rsa.pub和authorized_keys的文件权限问题
chmod 600 authorized_keys
chmod 700 ~/.ssh
2、ssh的配置文件
vim /etc/ssh/sshd_config
#启用 RSA 认证,默认为yes
RSAAuthentication yes
启用公钥认证,默认为yes
PubkeyAuthentication yes
#root用户ssh登录
PermitRootLogin yes
(这些配置我都是没有修改的,我的是redhat7.2)
自定义写个简单shell脚本
在常用文件夹下创建个文件
touch 164.sh
编辑文件
文件内容 ssh root@172.16.0.164
vim 164.sh
#添加内容
ssh root@172.16.0.164
保存退出
:wq
增加用户的执行权限
chmod u+x 164.sh
搞定 结合tab键使用更爽哟
./164.sh
expect命令免密登录方式
可能你觉得需要操作服务器系统不好,当然也可以只在本地操作。
使用expect命令只需要本地操作,前提是你本地有expect这个命令
1、创建一个文件
touch expectssh.sh
添加下面内容,将用户 、ip、密码修改成你自己的
#!/usr/bin/expect -f
set username root
set hostname 172.16.0.164
set password 123456
spawn ssh $username@$hostname
set timeout 1
expect { "yes/no"
{send "yesr";exp_continue}
}
expect "$username@$hostname's password:"
send "$passwordr"
interact
2、添加expectssh.sh执行权限
chmod u+x expectssh.sh
3、执行命令
expect expectssh.sh
(1、必须使用 expect 命令执行2、你可以再包一层 使用bash解析去执行)
以上就是本文的全部内容,希望对大家的学习有所帮助。
- GridView控件使用经验
- WordPress登陆文件wp-login.php添加相关参数,安全有保障
- WordPress在RSS Feed 中输出自定义特色图像(缩略图)
- 单拼域名can.com以高达99.2万元成交!
- CI学习 CCNET Config 第一天
- IBatisNet基础组件
- 学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]
- 在Windows 8 Hyper-V下的安装CentOS 6和SSH配置
- WordPress RSS Feed 优化/设置技巧六则
- SourceTree 基本介绍
- 学习Altas 笔记[JS简单调用服务端方法]
- 使用WinSCP软件在windows和Linux中进行文件传输
- 线程安全的Generic Dictionary
- Python 项目实践三(Web应用程序)第五篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 11 Confluent_Kafka权威指南 第十一章:流计算
- 简直骚操作,ThreadLocal还能当缓存用
- 品优购(IDEA版)-第一天
- 品优购(IDEA版)-第二天
- 品优购第四天
- 深度学习框架OneFlow的并行特色(附框架源码和教程)
- 图解Java设计模式
- python 如何解决 No module named ‘pip‘问题
- 用多智能体强化学习算法MADDPG解决"老鹰捉小鸡"问题
- 网站日志实时分析之Flink处理实时热门和PVUV统计
- 大数据量下的集合过滤—Bloom Filter
- 实时数仓链路分享:kafka =>SparkStreaming=>kudu集成kerberos
- rocketmq broker启动报错,找不到或无法加载主类
- 视频监控联网RTSP平台EasyNVR用户管理权限与实际权限不匹配,该如何排查?
- 2020CHINC,来赴一场“共建智慧医院”的约会