使用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,实现远程服务器对各个客户端的辨别感知能力

原文地址:https://www.cnblogs.com/zhuangmingnan/p/9021718.html

时间: 2024-07-29 14:11:33

使用ssh keys实现免验证登陆远程服务的相关文章

ubuntu免验证登陆权限问题

由于经常ssh到服务器,每次输入密码很烦.就传了本机公钥到服务器. 和所有教程将的一样,做起来挺简单的. 本机ssh-keygen -t rsa生成公钥和密钥. 将公钥传至服务器,用户目录下.ssh/下. 当时为了写文件,我做了如下设置 chmod 777 -R .ssh cd .ssh cat id_rsa.pub >> authorized_keys 一般来说到此,应该就搞定了. 但是本机ssh到服务器依然每次让输入密码 [email protected]:~$ ssh [email pr

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

1. 客户端生成密钥 # mkdir ~/.ssh # chmod 700 ~/.ssh # cd ~/.ssh 生成RSA密钥 # ssh-keygen -t rsa (然后连续三次回车) 2. 把公钥传到服务器上 将客户端~/.ssh/id_rsa.pub拷贝到服务器的/home/user0/.ssh目录,并重命名为authorized_keys文件,注意设为其他人不可读写. # chmod 400 ~/.ssh/id_rsa.pub # scp /home/user0/.ssh/id_rs

ssh批量处理免密登陆

使用此脚本需要安装一个工具:sshpass 步骤:1.先将该安装包上传到服务器上2.解压tar -xvf sshpass-1.05.tar.gz 3.进入cd sshpass-1.05 4.编译安装./configure makemake check #这是检测编译是否有误,如果没有提示信息就证明编译成功make install#说明:该软件具有卸载功能,可直接在该目录中执行make clean 可自动卸载 5.可以使用sshpass命令了 #使用前请先将存放IP地址和密码的文件以如下格式存放1

SSH 免密码登陆失败的一种原因,StrictModes

偶然因素帮别人配置ssh免密码登陆失败, ~/.ssh目录权限700,其下所有文件权限600,却依然失败.ssh -v 后发现密钥验证未通过,使用密码验证. 后来还是搜索得来,有人把ssh的StrictModes关闭就可以了,赶紧试了一下,果然可以. 于是搜了一下StrictModes限制的什么, 找到这么一段话 StrictModes no #修改为no,默认为yes.如果不修改用key登陆是出现server refused our key(如果StrictModes为yes必需保证存放公钥的

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

一.查看日志 Linux 日志系统 系统日志一般在/var/log下 # cd /var/log # less secure ##或者 # less messages ##最近登录的日志: # last 发现 sshd[15720]: Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys 二.修改权限 这是权限问题: sshd为了安全,对属主的目录和文件权限有所要求.如果权限不对,则s

ssh免密登陆

ssh无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 系统:CentOS7主机:A(192.168.66.100):B(192.168.66.110)为方面,用户都为root 1.在A下生成公钥/私钥对命令:    ssh-keygen -t rsa -P ''-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.它在/root下生成.ssh目录,其他用户的话在对应的家目录下(/home/

中小企业最基本的实用的ssh-key秘钥方案之ssh免密码登陆实战 &nbsp;

一.实验环境 本次实验需至少两台机器,本文采用三台机器做讲解.        服务器       ip     是否为分发机     nfs-server 10.0.0.11          是   web-client01 10.0.0.12          否   web-client02 10.0.0.13          否 二.实施步骤 1.添加系统账号(即普通用户)分别使用了三台机器,一台为分发机,另两台为被分发机.在企业环境中,很多用户直接用root来操作,这样好很不规范,权

ssh 配置 及免密码 密钥登陆

前言: 整理下很久之前做异地备份.数据同步都有使用到的ssh免密码通过密钥登陆的步骤. 出于安全考虑,需要对ssh服务做下简单配置 说明: 服务端:既服务器(或异地保存数据的目的机),或理解为IP通信中的目的地址 客户端:既工作站,个人电脑(或数据源服务器),或理解为IP通信中的源地址 思路: 要做的有几个地方: 默认服务端口修改(可以避免部分针对22端口的暴力破解或扫描) ssh版本协议(这个现在基本默认就是版本2) 禁止root账户ssh登陆 自定义登陆消息(可以给非本人的登陆行为一个友好提

设置SSH 免密码登陆

设置dns: vi /etc/hosts 最后一行追加; ip 主机名 设置SSH 免密码登陆: telnet 远程连接,SSH(secure shell)加密的通信协议,加密方式:rsa或者dsa root 目录下   ls -a  有.ssh 文件(存放密钥) ssh-keygen -t rsa  (三次回车) cd .ssh/    cp  id_rsa.pub  authorized_keys(生成授权文件) .ssh 文件夹rw-r--r--(g和0没有写的权限,u有写的权限) had