引言

------------------
程序员或者服务器运维人员在日常工作中,经常会遇到很多台服务器需要管理的情况,如果服务器多了,一般的做法都是通过一个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. unity 实现流光效果

    1.通过一些简单效果可以让我们更好的去理解shader,具体都在代码注释中: Shader "Unlit/MoveLightImage" { Properties { //主纹理 ...

  2. How Many Processes Should Be Set For The Receiving Transaction Manager (RTM)

    In this Document   Goal   Solution   References APPLIES TO: Oracle Inventory Management - Version 10 ...

  3. Leetcode_80_Remove Duplicates from Sorted Array II

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43835055 Follow up for "Re ...

  4. C++中不能被重载的运算符介绍

    C/C++ 里大多数运算符都可以在 C++ 中被重载. C 的运算符中只有 . 和 ?:(以及 sizeof,技术上可以看作一个运算符)不可以被重载.C++ 增加了一些自己的运算符,除了 :: 和 . ...

  5. Java进阶(五十二)利用LOG4J生成服务日志

    Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...

  6. Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听

    Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...

  7. linux服务搭建----ftp与ftp yum源搭建

    ftp服务     如果没有ftp         yum -y install  vsftpd (前提是你在有yum源的情况下才可以使用这条命令)     service vsftpd  resta ...

  8. MFC中char*,string和CString之间的转换

    MFC中char*,string和CString之间的转换 一.    将CString类转换成char*(LPSTR)类型 方法一,使用强制转换.例如:  CString theString( &q ...

  9. 用shell脚本挂载linux主机拷贝相应文件

    #!/bin/sh TARGETIP=192.168.88.3 #这里是你要挂在的ftp服务器的IP地址 MOUNTDIR=/mnt TARGETDIR=/root/Desktop/Work ERRO ...

  10. window7如何配置修改环境变量

    http://jingyan.baidu.com/article/b24f6c82cba6dc86bfe5da9f.html