使用ssh keys实现免验证登陆远程服务
引言
------------------
程序员或者服务器运维人员在日常工作中,经常会遇到很多台服务器需要管理的情况,如果服务器多了,一般的做法都是通过一个ssh客户端工具来管理,例如:securityCRT、Xshell、putty等远程工具,这类工具有两个特点:
1.可以将服务器存储成一个列表,配置一次服务器信息之后,下次直接双击就可以使用;
2.可以保存账号密码,端口,ip地址等信息,备注一个简单易记的名字之后,还可以分组管理,实现多台机器的管理;
那么对于linux的使用者或者没有工具的人员,如何使用系统自带的ssh客户端去实现和远程服务器的免密码登陆呢?本文基于Ubuntu18.04系统,自带的命令行ssh客户端测试通过。
一、什么是SSH?
------------------
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
二、SSH应用的场景
------------------
常见的SSH应用场景有:
1. Git、SVN等CVS(版本控制系统,System Version System)的身份认证,都需要本机生成ssh密钥对,然后和代码仓库进行交换鉴权;
2. 远程连接服务器的时候,需要通过ssh客户端和远程服务器互认;
3. 其他需要计算机之间互相认可时候的场景
三、如何通过ssh keys实现免验证登陆远程服务器(基于Ubuntu18.04)
-----------------
1. 检查自己本地是否已经生成了ssh的密钥对,在~/.ssh下有对应的id_rsa(密钥)、id_rsa.pub(公钥)文件,如果没有,可以通过命令
ssh-keygen
生成,直接回车即可,默认生成在 /home/<username>/.ssh 目录下
确认.ssh存在并且存在公钥、密钥之后进行下一步操作;
2. ssh-copy-id是一个ssh公钥拷贝工具,在很多系统多都有预装,通过命令
ssh-copy-id <username>@<remote_host>
输入密码之后,会提示 # Are you sure you want to continue connecting (yes/no)? # 键入yes回车即可,这里的操作是将ssh的公钥复制到远程服务器的可信名单中,下次通过该认证名单即可免验证登陆服务器。ssh-copy-id的默认连接端口是22,如果是其他的端口,可以使用命令
ssh-copy-id -p <port> <username>@<remote_host>
配置。
3. 如果配置完成,通过ssh连接登陆命令
ssh [-p <port>] <username>@<remote_host>
即可实现免验证登陆远程服务器;
4. 如果希望远程服务器只能通过ssh密钥认证登陆,那么可以关闭远程服务器的密码登陆功能:
I. 登陆远程服务器:
ssh [-p <port>] <username>@<remote_host>
II. 编辑ssh服务端配置文件
vim /etc/ssh/sshd_config
III. 搜索修改 PasswordAuthentication <config> ===> PasswordAuthentication no
IV. 重新启动ssh服务端程序
V. 即可禁止通过ssh密码远程登陆远程服务器
注:第2步可以通过手动将本机的公钥复制到远程服务器的认证密钥文件中实现相同功能,操作如下:
cat ~/.ssh/id_rsa.pub | ssh [-p <port>] <username>@<remote_host> "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
该命令主要是将本机的ssh公钥复制到远程服务器的用户目录下的.ssh/authorized_keys,实现远程服务器对各个客户端的辨别感知能力
使用ssh keys实现免验证登陆远程服务的更多相关文章
- linux ssh利用公钥免密登陆
1.安装检查ssh 如果没有ssh的话,需要安装 #yum install -y openssh-server openssh-clients 2.生成秘钥 ssh-keygen -t rsa 执行 ...
- ssh安全优化免密登陆
ssh协议 为什么使用ssh协议? 在进行传输时,会对数据进行加密,保证会话安全:telnet协议不是加密传输,在传输过程中如果被抓包,就会造成信息泄露,telnet默认不支持root远程. # 常用 ...
- ubuntu免验证登陆权限问题
由于经常ssh到服务器,每次输入密码很烦.就传了本机公钥到服务器. 和所有教程将的一样,做起来挺简单的. 本机ssh-keygen -t rsa生成公钥和密钥. 将公钥传至服务器,用户目录下.ssh/ ...
- ssh公私钥免密登陆
简介ssh Secure Shell(简写SSH) 为一项建立在应用层和传输层基础上的安全协议,专门为远程登录会话和其他网络服务提供安全性的协议. SSH安全机制分为两种,一种是基于口令的安全认证,一 ...
- 群晖DSM修改ssh权限实现免密码登陆
问题 使用ssh-id-copy正确上传公钥后依然无法免密码登陆 原因 群晖DSM中.ssh文件夹权限不当 解决 赋予正确权限 admin@DiskStation:/var/services/home ...
- linux ssh密钥认证, 免密码登陆
1. 客户端生成密钥 # mkdir ~/.ssh # chmod ~/.ssh # cd ~/.ssh 生成RSA密钥 # ssh-keygen -t rsa (然后连续三次回车) 2. 把公钥传到 ...
- Ubuntu使用ssh公钥实现免密码登录
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Ubuntu为例. 有机器A(10.0.2.1),B(10.0.2.100).现想A通过ssh免密 ...
- 阿里云ssh免密登陆突然无效
[root@node03 ~]# ssh-copy-id node02 root@node02's password: sh: .ssh/authorized_keys: Permission den ...
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
ssh认证的完整描述:https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/ 说明:点我去查看 今天我们只说生成ssh的 ...
随机推荐
- 1013. Battle Over Cities (25)
题目如下: It is vitally important to have all the cities connected by highways in a war. If a city is oc ...
- awk 详解+实例
1. awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是li ...
- VC++读取图像RGB值
代码: #include <iostream> #include <fstream> #include <string> #include <windows. ...
- Android进阶(十二)Fragment VS Activity
Fragment VS Activity Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这 ...
- 【翻译】为Ext JS和Sencha Touch开发人员准备的应用程序监测(App Inspector)
和其他的Sencha开发人员一样,我会花费大约半天的时间在我喜欢的IDE工具上编写JavaScript,而另一半时间则是在浏览器上测试和调试我的应用程序.在过去几年,每一个主要的浏览器都已大为改善.现 ...
- Smarty学习笔记(一)
1.Smarty的配置: 将lib的内容复制到自己的工程,然后引入 实例化和配置Smarty基本属性: $smarty = new Smarty(); $smarty->left_delimit ...
- 关于synchronized
如果用synchronized修饰一个类成员方法A,那么就不会出现下面的情况: 同时多个线程访问这个类的A方法. 当然如果还有一个方法B,它没有被synchronized修饰,那么A方法与B方法是可以 ...
- Linux变量内容的删除、取代与替换
变量内容的删除与取代 范例一:先让小写的 path 自定义变量配置的与 PATH 内容相同 [root@www ~]# path=${PATH} [root@www ~]# echo $path /u ...
- ORALCE EBS ALERT 初体验
Oracle EBS Alert Alert 是一种Oracle系统中的一种机制,它可以监视系统数据库,在规定的情况下给规定用户一个通知,通知可以是邮件或者其他形式,在标注的系统和客户化系统中都是可以 ...
- 安卓TV开发(前言)— AndroidTV模拟器初识与搭建
原文:http://blog.csdn.net/sk719887916/article/details/39612577skay 前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居 ...