SSH 密钥登录

一、什么是SSH?

简单说,SSH是一种网络协议,用于计算机之间的加密登录。

如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。

此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个

二、密钥登录

1.本地机器生成密钥 ssh-keygen -t rsa   //这里采用rsa算法

# 通过 ssh-keygen 可以生成需要的证书 
# 根据提示一路按 RETURN(ENTER) 即可 
# 默认情况下会生成 id_rsa 和 id_rsa.pub 
# id_rsa 为私钥,id_rsa.pub 为公钥 
ssh-keygen -t rsa

2.把本地copy到远程服务器:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.85.163

3.查看是否copy成功,登录到远程服务器上查看authorized_keys文件中是否有了上传的公钥

vi /root/.ssh/authorized_keys

4.修改修改 SSH 配置文件

 vi /etc/ssh/sshd_config

  去掉下面前面的注释符

   RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys

5.重启ssh服务

# RHEL/CentOS 系统 
service sshd restart
# Ubuntu 系统 
service ssh restart
# Debian 系统 
/etc/init.d/ssh restart

6.启动服务后报错

[root@Server-rm8glb ssh]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

 或者使用sshd -t 查看错误原因和systemctl status sshd.service效果类似:找到原因后,把相关的配置注释掉即可

7.查看sshd服务状态

systemctl status sshd.service

参考:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

原文地址:https://www.cnblogs.com/guanbin-529/p/12629990.html