SSH免密码登陆

什么是SSH

SSH(Secure Shell)是一种提供网络安全的传输协议。它保证了在网络上的数据并非明文传输,目前使用SSH登录远程终端已经是通用方式。

SSH登录时有两种验证方式

  • 基于密码的安全验证,它要求用户在每次登录服务器时输入密码,服务器端验证通过后即登录成功。
  • 基于密钥的安全验证,客户端的公钥会预先保存在服务器端,当登录时,服务器端会使用该公钥做验证,如果验证成功,用户不需输入密码即完成登录。
    为了避免每次都输入密码这种重复性工作,我们选择第二种方式进行远程登录。

基于密钥登录的配置步骤

在本地终端生成密钥对。

ssh-keygen // 加密方式默认使用RSA,可以通过 “ssh-keygen -t 加密方式” 

指定加密方式
生成过程中会询问设置密钥对的保存位置和打开密码。按enter键使用默认设置即可。此时会在"~/.ssh"目录下生成名为id_rsaid_rsa.pub的私钥文件和公钥文件。
使用密码登录到服务器端,将公钥字符串copy到"~/.ssh/authorized_keys"文件内。

vi ~/.ssh/authorized_keys //copy 公钥字符串

如果.ssh目录尚未建立,需要先创建并且修改权限:

mkdir ~/.ssh
chmod 700 ~/.ssh

如果authorized_keys文件是新创建的,需修改文件权限

chmod 600 ~/.ssh/authorized_keys

验证是否设置成功

ssh username@server-ip

此时应该能够跳过输入密码的提示,直接登录到远程终端。如果仍然需要输入密码,最有可能的原因是上面第三步文件权限配置的有问题。

配置服务器别名,使用别名代替ip地址

虽然经过上面的配置,我们不用在每次登录时都输入密码。当仍然需要我们输入用户名和服务器ip。有没有可能把这一步骤也省略呢?答案是肯定的,通过配置服务器别名的方式,登录时只需输入别名即可。

  • 打开~/.ssh/config文件,添加以下内容:
Host server-alias           # server-alias为SSH链接的服务器别名
HostName server-ip  # 服务器地址
Port 22
User username           # 服务器端用户名
PreferredAuthentications publickey 
IdentityFile ~/.ssh/id_rsa   # 私钥地址,默认为 ~/.ssh/id_rsa
  • 验证
    以后即可通过以下命令登录远程服务器
ssh server-alias

如果登录未成功,请仔细检查每项的配置是否正确。

总结

经过上述配置,有效的简化了登录操作,会为我们节省不少时间。更重要的是,所有底层使用SSH的程序,都因此而简化了操作步骤。比如:

用于传输文件的scp和rsync命令。只需输入:

scp file server-alias:/dir

如果服务器端上配置了git远程仓库,只需输入:

git clone server-alias:/git-repo

你会发现除了使用简易的别名代替了ip地址外,输入密码的步骤也被省略掉了!

作者:mr_franklin
链接:http://www.jianshu.com/p/03effb53705c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是SSH SSH(Secure Shell)是一种提供网络安全的传输协议。它保证了在网络上的数据并非明文传输,...
    mr_franklin阅读 10,775评论 1 10
  • [TOC] ssh免密码登陆及其原理 1 示例 ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-k...
    小小少年Boy阅读 9,921评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,997评论 19 139
  • 一.ssh免密码登陆需求 在我们处理集群或分布式系统时,经常会涉及到多个linux系统服务器。而在多个服务...
    a123demi阅读 4,761评论 0 51
  • 《正义从哪里来》 社会并不认为那些在竞争中不幸落败的人在法律上或道德上有任何免于痛苦是权力,而只有当人们用上了一些...
    A00小浅阅读 157评论 0 0