原文地址 :https://segmentfault.com/a/1190000000481249

在客户端来看,SSH提供两种级别的安全验证。[摘自wikipedia]

  • 第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。
  • 第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。

这里要讨论的ssh密钥认证自动登录正是基于第二种级别的安全验证方式。
步骤如下:

1. 在本地机器创建公钥

打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可。

ssh-keygen -t rsa -C  'your email@domain.com'

-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱

2. 将公钥复制到ssh服务器

将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种。

brew install ssh-copy-id
ssh-copy-id username@hostname #将username和hostname替换为你的ssh服务器用户名和IP
  • 当ssh服务器username用户目录下尚未有.ssh目录时使用此方式
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
  • 通用方式
scp ~/.ssh/id_rsa.pub username@hostname:~/ #将公钥文件复制至ssh服务器
ssh username@hostname #使用用户名和密码方式登录至ssh服务器
mkdir .ssh #若.ssh目录已存在,可省略此步
cat id_rsa.pub >> .ssh/authorized_keys #将公钥文件id_rsa.pub文件内容追加到authorized_keys文件

3. 快捷登录

完成以上步骤后,即可使用以下命令直接登录ssh服务器,妈妈再也不用担心你记不住密码了

ssh username@hostname #将username替换为你的ssh服务器用户名,hostname替换为服务器的ip

但是,每次仍然需要输入ssh username@hostname,仍算不上最优的解决方案,要是能实现一键登录或一条命令登录最好不过了,下面来看看都有那些解决方法

  • ssh本身也提供了一种快捷的方式来解决这个问题,往~/.ssh/config配置文件添加你的ssh服务器信息即可
vim ~/.ssh/config   #若没有该文件,直接新建即可

添加文件内容格式如下:

Host        alias #自定义别名
HostName hostname #替换为你的ssh服务器ip或domain
Port port #ssh服务器端口,默认为22
User user #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件

保存文件退出后,即可使用别名登录ssh服务器

ssh alias #alias是你在~/.ssh/config文件配置的别名

若有多个ssh账号需要配置,只要在~/.ssh/config空行再写即可,如下:

Host        foo
HostName 192.168.2.222
Port 22
User test
IdentityFile ~/.ssh/id_rsa Host alias
HostName hostname
Port port
User user
  • 如果你本地终端使用的是zsh,那就太简单不过了,直接给zsh添加一条别名
echo "alias ssh-to-username='ssh username@hostname'" >> ~/.zshrc #将username和hostname替换为你的服务器信息
source ~/.zshrc #重新加载更改后的zshrc文件
ssh-to-username #使用别名,一条命令即可登录你的ssh服务器
  • 如果你本地终端使用的是iterm2还可以添加Profile实现一键登录,具体步骤此处略过
    参考链接

-EOF-

转载 :配置ssh密钥认证自动登录的更多相关文章

  1. Mac OS X下配置远程Linux 服务器SSH密钥认证自动登录

    1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...

  2. Mac下配置远程Linux 服务器SSH密钥认证自动登录

    1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...

  3. 如何在 Linux 中配置基于密钥认证的 SSH

    什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在 ...

  4. linux ssh 不用密码自动登录的几种方法

    1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运 ...

  5. Linux之SSH密钥认证

    1.SSH协议的认识 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前 ...

  6. 华为S5700交换机初始化和配置SSH和TELNET远程登录方法

    基础设置: 配置登陆IP地址<Quidway> system-view                                                            ...

  7. 关于KeePass实现ssh协议的自动登录

    本文主要介绍一下,在keepass中如何实现linux主机的ssh方式的自动登录 keepass版本:KeePass 2.45 在keepass的URL中,其实默认也是内置了ssh的,其原理是调用pu ...

  8. CAS 4.0.0RC 配置通过数据库认证用户登录

    配置通过数据库认证用户登录 打开webapp\WEB-INF目录下的deployerConfigContext.xml,替换 <bean id="primaryAuthenticati ...

  9. Sourcetree配置ssh密钥 - git图形化工具(二)

    这里主要介绍Sourcetree如何导入已经生成好的ssh私钥,如何生成ssh私钥自行百度. 如果Sourcetree没有配置ssh密钥,克隆时会提示如下错误: 仓库类型:这是一个无效的源路径/URL ...

随机推荐

  1. VB打开工程时出现不能加载MSCOMCTL.OCX

    用记事本打开VBP文件找到这一行:Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX改为:Object={831FDD1 ...

  2. 微信里面防止下拉"露底"组件

    前言 在微信里面浏览页面的时候,有一个很管用的方法可以区分这个页面是原生的还是H5形式的.随便打开一个页面,用力往下扯的时候,如果页面上方出现了"黑底",黑底上有一行诸如网页由ga ...

  3. LOJ.6284.数列分块入门8(分块)

    题目链接 \(Description\) 给出一个长为n的数列,以及n个操作,操作涉及区间询问等于一个数c的元素,并将这个区间的所有元素改为c. \(Solution\) 模拟一些数据可以发现,询问后 ...

  4. Java程序员面试中的多线程问题1

    转自:http://blog.jobbole.com/18571/ 很多核心Java面试题来源于多线程(Multi-Threading)和集合框架(Collections Framework), 理解 ...

  5. C++ operator重载运算符和隐式转换功能的实现

    C++ operator重载运算符和隐式转换功能的实现: #include <iostream> using namespace std; class OperatorTest { pub ...

  6. RouterOS配置静态IP上网/RouterOS做为二级路由上网

    说明:这里只展示关键步骤. -1.lan口的设置以及dhcp服务器的这些设置这里省略,参考:https://www.cnblogs.com/EasonJim/p/9589714.html 0.设置网卡 ...

  7. c#代码混淆

    1.C#编写的dll库如何加密 2..NET Reactor使用教程 3..NET Reactor中各种混淆含义.原理 4..NET Reactor制作软件许可证 5..NET Reactor混淆代码 ...

  8. ThreadLocal 简介 案例 源码分析 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. haproxy负载均衡的安装配置

    haproxy是一款可靠,高性能的并且可以支持TCP/HTTP的负载均衡器,和前面说过的nginx负载均衡类似,这里haproxy对于负载均衡来说更专业,支持的配置选项更多,稳定性也很强,甚至只需要一 ...

  10. AWK常用技巧

    1.1 介绍 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK ...