转载 :配置ssh密钥认证自动登录

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

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

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

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

1. 在本地机器创建公钥

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

ssh-keygen -t rsa -C  ‘your [email protected]‘

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

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

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

brew install ssh-copy-id
ssh-copy-id [email protected]  #将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 [email protected],仍算不上最优的解决方案,要是能实现一键登录或一条命令登录最好不过了,下面来看看都有那些解决方法

  • 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-

时间: 2024-08-13 01:06:14

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

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

1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your [email protected]' -t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如你的邮箱 2. 将公钥复制到ssh服务器 将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种. [适用于osx系统]使用ssh-c

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

1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your [email protected]' -t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如你的邮箱 2. 将公钥复制到ssh服务器 将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种. [适用于osx系统]使用ssh-c

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

什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在无安全网络上发送数据,它都会在源系统上自动地被加密,并且在目的系统上解密.SSH 提供了四种加密方式,基于密码认证,基于密钥认证,基于主机认证和键盘认证.最常用的认证方式是基于密码认证和基于密钥认证. 在基于密码认证中,你需要的仅仅是远程系统上用户的密码.如果你知道远程用户的密码,你可以使用 ssh

配置Xshell或xftp使用密钥认证方式登录到服务器

配置Xshell或xftp使用密钥认证方式登录到服务器:  Xshell及xftp下载地址\\**.**.*.*\soft\sftp   (帐号密码只需设置一次,即两个软件即可使用)        1.在xshell  工具栏下选择用户密钥管理器,导入邮件附件里的私钥文件即单独的用户名文件.        2.打开Xshell,点击"New"按钮,弹出"New Session Properties"对话框,在"Connection"栏目中,输入刚

ssh密钥认证

?br/>?基于密钥的认证实现基于密钥的认证,在登录过程中不需要输入密码,客户端和ssh服务端以密钥对进行认证,不在网络中传输用户名和密码信息,其公钥存储于ssh服务端,私钥当然是存储在客户端本地的.认证通过后才能登录成功.基于密钥的认证在我们常用的终端软件上设置好以后,我们在连接Linux主机时可自动登录,而且比常规ssh口令登录更加安全,而且服务器之间ssh登录也可以启用这种方式省去了输入口令的过程,而且在修改账号密码后也能继续使用原来的密钥进行认证.??实现基于密钥的认证??服务器之间实现

git配置ssh密钥

如果主机(当前登录用户)之前没有git账号,即添加第一个git账号,并配置ssh密钥时, 按照如下的步骤: 1 cd  ~/.ssh 2 ssh-keygen -t rsa -C '[email protected]' 3 cat id_rsa.pub 4 拷贝公钥到git服务器上 5 测试:git clone [email protected]:liulian/mahout-0.9-custom.git 附加信息: 1 ssh-keygen -t rsa -C '[email protecte

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

1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运行命令:# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)# ssh [email protected] "mkdir .ssh" (需要输入密码)# scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id

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

配置通过数据库认证用户登录 打开webapp\WEB-INF目录下的deployerConfigContext.xml,替换 <bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> <property name="users"> <map> <

Linux配置SSH公钥认证与Jenkins远程登录进行自动发布

公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密:另一个称为密钥(private key),只有拥有者才能看到,用于解密. 在使用jenkins自动构建并远程登录服务器进行发布应用的时候,需要使用SSH公钥认证来解决登录服务器的问题. 其实很简单,只需要两个指令即可. ssh-keygen -t rsa -P '' ssh-copy-id -i ~/.ssh/id_rsa.pub <IP> 假设有两台服务器,A是Jenkins构建服务器,