ssh使用密钥免密码登录

使用ssh远程连接服务器,有两种身份校验方式:账号密码和秘钥。使用秘钥的方式理论上更加安全,而且免去了输入密码的步骤,使用起来更方便(尤其对于sftp,scp等)。

设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes
PubkeyAuthentication yes

留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no

最后,重启 SSH 服务:

[[email protected] .ssh]$ service sshd restart
  1. 秘钥由谁生成
    这是比较容易搞乱的一点。这里以A、B两台服务器为例,假设A需要ssh登录B,那么应该由那台服务器生成秘钥呢。可能有人以为像门锁一样,主人家负责装锁配钥匙,把钥匙交给要开门的人使用,所以由被访问的B服务器生成秘钥。

    事实恰恰相反,秘钥由访问请求方A服务器生成,并把生成的公钥交给B导入;公钥可以在多台服务器导入,一台服务器导入了A的公钥,即意味着承认A的有访问自己权限,所以A可以用一套密钥登录多台服务器。

  2. 账号
    访问和被访问的服务,需要有相同的账号,而且密钥由该账号生成。
  3. 密钥生成
    在A服务器上执行命令:
    ssh-keygen -t [rsa|dsa]
    rsa和dsa是生成密钥常用的两种加密算法,其他可选算法还有ecdsa、rsa1等。
    命令执行过程需要用户输入的地方连续回车即可(enter passphrase的别输入,否则登录的时候还是得输入密钥密码)。
    执行成功后,在用户home目录下的.ssh子目录里会生成私钥文件和公钥文件:id_rsa,id_rsa.pub或id_dsa,id_dsa.pub。
  4. 公钥导入
    方法一:
    把公钥文件id_rsa.pub上传到B服务器,然后执行:
    cat id_rsa.pub >> ~/.ssh/authorized_keys
    将id_rsa.pub的内容,追加到文件~/.ssh/authorized_keys中

    方法二:
    在A服务器上使用命令cat ~/.ssh/id_rsa.pub查看公钥内容,将内容复制追加到B服务器的文件~/.ssh/authorized_keys中(请注意不要删除或覆盖该文件中已有的内容)。

  5. 修改权限
    A服务器上的.ssh和秘钥文件的权限在ssh-keygen生成时已设好,无须特别设置。B服务器上如果是首次添加authorized_keys,需要修改权限:
    chmod 600 authorized_keys
    设置authorized_keys权限

    chmod 700 -R .ssh
    设置.ssh目录权限

  6. 登录
    在A服务器上执行:
    ssh-add /id_rsa
    必须保证id_rsa文件的权限为600
    ssh ip/hostname(B服务器的ip或主机名)
    即可登录。
  7. 问题Could not open a connection to your authentication agent

    先执行  eval `ssh-agent`  (是~键上的那个`) 再执行 ssh-add ~/.ssh/rsa成功

时间: 2024-08-24 00:29:04

ssh使用密钥免密码登录的相关文章

设置ssh通过密钥免密码登录Linux服务器

每次登录linux时需要输入一大串密码(有时还会等很长时间才能输入密码,文章最后有解决方法),密码设的太短,安全性不高,长了很难记忆并且输入麻烦.使用密钥登录,不仅可以省去了密码输入的步骤,而且提高了服务器的安全性. 1. 产生密钥 执行ssh-keygen -t rsa [[email protected] ~]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the ke

使用ssh公钥实现免密码登录

使用ssh公钥实现免密码登录 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(10.207.160.34),B(10.221.32.234).现想A通过ssh免密码登录到B.首先以root账户登陆为例. 1.在A机下生成公钥/私钥对. ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车. 该命令将在~/.ssh目录下面产生

SSH中的免密码登录

1:执行命令  ssh-keygen rsa 产生秘钥 ,位于~/.ssh文件夹下(如果在这期间有什么提示,一路敲击enter下去,什么都不用输入) 2:执行命令 cp  ~/.ssh/id_rsa.pub     ~/.ssh/authorized_keys  如果提示yes/no  直接输入  yes 验证ssh  localhost 搞定 不用输入密码了 SSH中的免密码登录

Linux使用ssh公钥实现免密码登录Linux

ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想A通过ssh免密码登录到B.首先以root账户登陆为例. 1.在A机下生成公钥/私钥对. [[email protected] ~]# ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.该命令将在/root

使用ssh公钥实现免密码登录服务器

ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,CentOS为例.首先在客户端上创建一对公私钥 yum -y install openssh systemctl start sshd systemctl enable sshd /etc/ssh/ssh_config       客户端配置文件 /etc/ssh/sshd_config     服务器配置文件 vim /etc/ssh/ssh_config IdentityFile ~/.ssh/id

CentOS 6.9 SSH配置用户免密码登录

1. 演示环境: 192.168.1.144:CentOS 6.9 x86_64 192.168.1.146:CentOS 7.4 x86_64 2. 演示目标:192.168.1.144通过密钥认证的方式免密码直接登录192.168.1.146 3. 192.168.1.144安装软件包,并首次连接192.168.1.146: # yum -y install openssh-clients # ssh [email protected] 4. 192.168.1.144生成密钥对:# ssh

[原]配置多个密钥免密码登录服务器简明教程

客户端:MacOS 服务端:CentOS 其他系统操作类似. 1. 客户端生成密钥. ssh-keygen -t rsa -C "mac" * -C 是注释的意思,如果你有多个密钥,价格注释比较好区分 * windows系统可能没有ssh-keygen命令,装一个git-bash就好了 2. 上述命令一直敲回车,会生成两个文件id_rsa,id_rsa.pub,前面是私钥,后面是公钥. 私钥放到本机~/.ssh目录下,改个名字:id_rsa_mac,方便以后增加其他密钥,在~/.ssh

Linux ssh下实现免密码登录

1.Linux 生成密钥 ssh-keygen -t rsa 进入".ssh"会生成以下几个文件 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts : 已知的主机公钥清单 2.远程免密登录(现在我们就需要把key文件复制到其它几台服务器了,) 常用以下几种方法: a.通过ssh-copy-id的方式  命令: ssh-copy-id (服务器IP) 常见错误: [root@test ~]# ssh-copy-id -i ~/.ssh/id

CentOS7 配置密钥免密码登录

在用户目录下新建一个.ssh目录,并将其目录权限改为700(仅用户自身有读写操作权限): mkdir .ssh chmod 700 .ssh 进入.ssh目录,使用ssh-keygen命令生成rsa密钥对:#一路回车即可ssh-keygen -t rsa -b 4096 -C "biabia123456@126.com" 这时生成了两个文件:id_rsa和id_rsa.pub,其中前一个为私钥,后一个为公钥,公钥须保留在服务器上,私钥拷贝到客户端机器上 在.ssh目录中新建一个文件名为