引言

------------------
程序员或者服务器运维人员在日常工作中,经常会遇到很多台服务器需要管理的情况,如果服务器多了,一般的做法都是通过一个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实现免验证登陆远程服务的更多相关文章

  1. linux ssh利用公钥免密登陆

    1.安装检查ssh 如果没有ssh的话,需要安装 #yum  install -y openssh-server openssh-clients 2.生成秘钥 ssh-keygen -t rsa 执行 ...

  2. ssh安全优化免密登陆

    ssh协议 为什么使用ssh协议? 在进行传输时,会对数据进行加密,保证会话安全:telnet协议不是加密传输,在传输过程中如果被抓包,就会造成信息泄露,telnet默认不支持root远程. # 常用 ...

  3. ubuntu免验证登陆权限问题

    由于经常ssh到服务器,每次输入密码很烦.就传了本机公钥到服务器. 和所有教程将的一样,做起来挺简单的. 本机ssh-keygen -t rsa生成公钥和密钥. 将公钥传至服务器,用户目录下.ssh/ ...

  4. ssh公私钥免密登陆

    简介ssh Secure Shell(简写SSH) 为一项建立在应用层和传输层基础上的安全协议,专门为远程登录会话和其他网络服务提供安全性的协议. SSH安全机制分为两种,一种是基于口令的安全认证,一 ...

  5. 群晖DSM修改ssh权限实现免密码登陆

    问题 使用ssh-id-copy正确上传公钥后依然无法免密码登陆 原因 群晖DSM中.ssh文件夹权限不当 解决 赋予正确权限 admin@DiskStation:/var/services/home ...

  6. linux ssh密钥认证, 免密码登陆

    1. 客户端生成密钥 # mkdir ~/.ssh # chmod ~/.ssh # cd ~/.ssh 生成RSA密钥 # ssh-keygen -t rsa (然后连续三次回车) 2. 把公钥传到 ...

  7. Ubuntu使用ssh公钥实现免密码登录

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Ubuntu为例. 有机器A(10.0.2.1),B(10.0.2.100).现想A通过ssh免密 ...

  8. 阿里云ssh免密登陆突然无效

    [root@node03 ~]# ssh-copy-id node02 root@node02's password: sh: .ssh/authorized_keys: Permission den ...

  9. Jenkins进阶系列之——09配置Linux系统ssh免密码登陆

    ssh认证的完整描述:https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/ 说明:点我去查看 今天我们只说生成ssh的 ...

随机推荐

  1. javascript语法之number对象和Math对象

    这两个对象很简单,一个例子就能掌握用法. 一:number对象. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  2. 【shell脚本练习】批量添加用户和设置密码

    题目 添加9个用户,user101-user109:密码同用户名: 思路 for循环来添加就好了,用户名和密码都可以拼字符串来完成 user10+数字 要判断是否能添加成功,注意非交互模式下修改用户密 ...

  3. 开源视频平台:MediaCore(MediaDrop)

    MediaCore 是一个多媒体的建站系统,主要的功能包括视频.音频.YouTube集成.播客和 iTunes RSS 生成,用户可以提交各种多媒体内容. <开源中国>网站上说它是一个开源 ...

  4. Oracle Forms Services Architecture

    Oracle Forms Services Architecture Author:                         PTIAN(tianpan@gmail.com) Creation ...

  5. Android下用Activity实现圆角的自定义弹窗

    这里我们使用9patch制作一个背景,找到SDK目录下的tools目录,双击draw9patch.bat文件,如下图: 打开想要编辑的文件,进行编辑(9patch的编辑教程自寻). 编辑完成后,保存到 ...

  6. IP协议详解(转)

    本文转载自博文协议森林05 我尽力 (IP协议详解).这篇博文写的很有趣味,特转载! IPv4与IPv6头部的对比 我们已经在IP接力中介绍过,一个IP包分为头部(header)和数据(payload ...

  7. 2DSprite添加Light照射(Unity3D开发之十六)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/45534245 ...

  8. 事件/委托机制(event/delegate)(Unity3D开发之十七)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/46539433 ...

  9. 写一个python的服务监控程序

    写一个python的服务监控程序 前言: Redhat下安装Python2.7 rhel6.4自带的是2.6, 发现有的机器是python2.4. 到python网站下载源代码,解压到Redhat上, ...

  10. application之OnLowMemory()和 OnTrimMemory(level)讲解

    1. OnLowMemory OnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLo ...