使用公钥登录OpenSSH

使用公钥登录OpenSSH

2013年10月24日

16:47

    1. 生成密钥对

    我所知道的,有三种生成密钥对的工具,分别为GNU/Linux下的ssh-keygen命令、puttygen、SSH
    Secure Shell。

    • 使用ssh-keygen生成密钥对





    [[email protected]
    ~]# ssh-keygen -C "Proxy for developers"

    Generating
    public/private rsa key pair.

    Enter
    file in which to save the key (/root/.ssh/id_rsa):

    Enter
    passphrase (empty for no passphrase):

    Enter
    same passphrase again:

    Your
    identification has been saved in /root/.ssh/id_rsa.

    Your
    public key has been saved in /root/.ssh/id_rsa.pub.

    The
    key fingerprint is:

    71:b2:a7:45:84:db:b1:99:9c:b7:b3:65:c1:f7:8f:41
    Proxy for developers

    The
    key‘s randomart image is:

    +--[
    RSA 2048]----+

    |        
    ..     
                |

    |       
    ...     
                |

    |       
    o+o* .  
           |

    |       
    .*B . E .       
    |

    |       
    S o. o o.      
    |

    |        
    +  o +
    .       
    |

    |       
    .   
    = o.        
    |

    |           
    . . .          
    |

    |                
                |

    +---------------------+

    生成的公钥为: /root/.ssh/id_rsa.pub

    生成的私钥为:/root/.ssh/id_rsa

    • 使用puttygen生成 密钥对

    • 点击【Generate】按钮

    • 随意移动一下鼠标

    • 设置Key comment

    • 设置保护私钥的密码

    • 保存公钥和私钥

    生成的公钥保存为:d:\id_rsa_putty.pub

    生成的私钥保存为:d:\id_rsa_putty.ppk

    • 使用SSH Secure Shell生成密钥对

    • 点选【Edit】->【Settings…】打开Settings对话框

    • 选中左则【Global Settings】->【User Keys】菜单项

    • 点击【Generate New Keypair】按钮

    • 按向导生成密钥对

    1. 将公钥上传到服务器

    这里需要注意的是公钥的格式。我所知道的公钥格式有两种,一种是OpenSSH的格式,另一种是RFC 4716定义的格式。puttygen和SSH
    Secure Shell生成的公钥格式为RFC
    4716规定的格式,ssh-keygen生成的公钥是OpenSSH的格式。所以如果使用的是puttygen或SSH
    Secure Shell生成的密钥对,那么将公钥上传到服务器之后,需要将公钥的格式转换成OpenSSH的格式。可以在服务器上使用以下命令转换:






    [[email protected]
    .ssh]# ssh-keygen -i -f id_rsa_putty.pub

    ssh-rsa

    AAAAB3NzaC1yc2EAAAABJQAAAQBT2Qdda5Nu7iUL+DQYIcw2waoSYl22j3k4D9/ulJaOk09yAtqylEL85gtsjBiQZGWGJhA2Kz7HwsDhRPJQk/J3MsNGWlzI8Ruf/c2jAQKZiLMjjyKg1ceAMQNVjRR0zBmvJz06Mce2qBbjPoGt3tj1rCo3FP9SnE/ts64ySJJdRFnLfPKnwcE5cPCr1qUYyAMPHucniHUlOHll1lguw1eHRF63nWy8WycKyYAkM5c2yNEd1XMrm0GLPedcIRHi+cyLmIV1c6jwd21XS2F6QJk8yOGbjCBWEU1X1UMsB4FRg8nyQm5Rog+EPAsnOMz4UO7ZIzv+LKsyrGCBFc1fOFsZ

    对于私钥的格式,以上三种方式生成的私钥格式各不相同,但是可以使用puttygen进行转换。方法是先导入,再导出为需要的私钥格式。

    1. 更改OpenSSH服务配置文件

    /etc/ssh/sshd_config





    #      
    $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp
    $

    #
    This is the sshd server system-wide configuration file.  See

    #
    sshd_config(5) for more information.

    #
    This sshd was compiled with
    PATH=/usr/local/bin:/bin:/usr/bin

    #
    The strategy used for options in the default sshd_config shipped
    with

    #
    OpenSSH is to specify options with their default value where

    #
    possible, but leave them commented. 
    Uncommented options change a

    #
    default value.

    Port 12345

    #AddressFamily
    any

    #ListenAddress
    0.0.0.0

    #ListenAddress
    ::

    #
    Disable legacy (protocol version 1) support in the server for
    new

    #
    installations. In future the default will change to require
    explicit

    #
    activation of protocol 1

    Protocol
    2

    #
    HostKey for protocol version 1

    #HostKey
    /etc/ssh/ssh_host_key

    #
    HostKeys for protocol version 2

    #HostKey
    /etc/ssh/ssh_host_rsa_key

    #HostKey
    /etc/ssh/ssh_host_dsa_key

    #
    Lifetime and size of ephemeral version 1 server key

    #KeyRegenerationInterval
    1h

    #ServerKeyBits
    1024

    #
    Logging

    #
    obsoletes QuietMode and FascistLogging

    #SyslogFacility
    AUTH

    SyslogFacility
    AUTHPRIV

    #LogLevel
    INFO

    #
    Authentication:

    #LoginGraceTime
    2m

    #PermitRootLogin
    yes

    #StrictModes
    yes

    #MaxAuthTries
    6

    #MaxSessions
    10

    #RSAAuthentication
    yes

    PubkeyAuthentication
    yes

    #AuthorizedKeysFile    
    .ssh/authorized_keys

    #AuthorizedKeysCommand
    none

    #AuthorizedKeysCommandRunAs
    nobody

    #
    For this to work you will also need host keys in
    /etc/ssh/ssh_known_hosts

    #RhostsRSAAuthentication
    no

    #
    similar for protocol version 2

    #HostbasedAuthentication
    no

    #
    Change to yes if you don‘t trust ~/.ssh/known_hosts for

    #
    RhostsRSAAuthentication and HostbasedAuthentication

    #IgnoreUserKnownHosts
    no

    #
    Don‘t read the user‘s ~/.rhosts and ~/.shosts files

    #IgnoreRhosts
    yes

    #
    To disable tunneled clear text passwords, change to no here!

    #PasswordAuthentication
    yes

    #PermitEmptyPasswords
    no

    #PasswordAuthentication
    yes

    PasswordAuthentication
    no

    #
    Change to no to disable s/key passwords

    #ChallengeResponseAuthentication
    yes

    ChallengeResponseAuthentication
    no

    #
    Kerberos options

    #KerberosAuthentication
    no

    #KerberosOrLocalPasswd
    yes

    #KerberosTicketCleanup
    yes

    #KerberosGetAFSToken
    no

    #KerberosUseKuserok
    yes

    #
    GSSAPI options

    #GSSAPIAuthentication
    no

    GSSAPIAuthentication
    yes

    #GSSAPICleanupCredentials
    yes

    GSSAPICleanupCredentials
    yes

    #GSSAPIStrictAcceptorCheck
    yes

    #GSSAPIKeyExchange
    no

    #
    Set this to ‘yes‘ to enable PAM authentication, account
    processing,

    #
    and session processing. If this is enabled, PAM authentication
    will

    #
    be allowed through the ChallengeResponseAuthentication and

    #
    PasswordAuthentication. 
    Depending on your PAM configuration,

    #
    PAM authentication via ChallengeResponseAuthentication may
    bypass

    #
    the setting of "PermitRootLogin without-password".

    #
    If you just want the PAM account and session checks to run
    without

    #
    PAM authentication, then enable this but set
    PasswordAuthentication

    #
    and ChallengeResponseAuthentication to ‘no‘.

    #UsePAM
    no

    UsePAM
    yes

    #
    Accept locale-related environment variables

    AcceptEnv
    LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
    LC_MESSAGES

    AcceptEnv
    LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT

    AcceptEnv
    LC_IDENTIFICATION LC_ALL LANGUAGE

    AcceptEnv
    XMODIFIERS

    #AllowAgentForwarding
    yes

    #AllowTcpForwarding
    yes

    #GatewayPorts
    no

    #X11Forwarding
    no

    X11Forwarding
    yes

    #X11DisplayOffset
    10

    #X11UseLocalhost
    yes

    #PrintMotd
    yes

    #PrintLastLog
    yes

    #TCPKeepAlive
    yes

    #UseLogin
    no

    #UsePrivilegeSeparation
    yes

    #PermitUserEnvironment
    no

    #Compression
    delayed

    #ClientAliveInterval
    0

    #ClientAliveCountMax
    3

    #ShowPatchLevel
    no

    UseDNS
    no

    #PidFile
    /var/run/sshd.pid

    #MaxStartups
    10

    #PermitTunnel
    no

    #ChrootDirectory
    none

    #
    no default banner path

    #Banner
    none

    #
    override default of no subsystems

    Subsystem      
    sftp   
    /usr/libexec/openssh/sftp-server

    #
    Example of overriding settings on a per-user basis

    #Match
    User anoncvs

    #      
    X11Forwarding no

    #      
    AllowTcpForwarding no

    #      
    ForceCommand cvs server

    主要需要改动的就是以上标红的地方:

    • Port
      12345 
      ssh服务的监听端口最好改一下,这样会大大减少/var/log/secure中的垃圾日志

    • PubkeyAuthentication
      yes 
      公钥认证

    • PasswordAuthentication
      no 
      禁用密码认证

    另外请注意一下以下配置:

    #AuthorizedKeysFile    
    .ssh/authorized_keys

    这表示上传到服务器的公钥存放在家目录中的.ssh/authorized_keys文件中。




    cat
    id_rsa.pub >> authorized_keys

    1. 重启OpenSSH服务





    service
    sshd restart

    1. 使用私钥验证登录服务器

    • 在GNU/Linux下登录

    在GNU/Linux下需要更改一下私钥文件的权限:





    [[email protected]
    ~]# chmod 600 .ssh/id_rsa_openssh

    登录:





    [[email protected] ~]# ssh [email protected] -p 12345 -i
    .ssh/id_rsa_openssh

    Enter
    passphrase for key ‘.ssh/id_rsa_openssh‘:

    Last
    login: Thu Oct 24 16:38:11 2013 from 192.168.0.32

    [[email protected]
    ~]#

    在GNU/Linux下使用sftp命令时没有能够指定私钥的参数,这时候可以在家目录中的.ssh文件夹下建立config文件,内容如下:





    IdentityFile ~/.ssh/id_rsa_openssh   
    # 指定私钥文件

    Port 12345                                             
    #
    要登录的服务器上的ssh服务监听端口

    • 使用putty登录

      • 在session面板填写服务器IP及SSH服务监听端口

      • 在【Connection -> SSH -> Auth】面板填写私钥路径

来自为知笔记(Wiz)

使用公钥登录OpenSSH,码迷,mamicode.com

时间: 2024-10-08 20:04:35

使用公钥登录OpenSSH的相关文章

配置公钥登录提示还是输入密码

一.知识点补充: 在客户端来看,SSH提供两种级别的安全验证 第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密. 第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上. 二.问题描述 集群一台主节点master,用到第二种级别,运行的用户是hadoop2,现在配置了公钥登录后,ssh连接还是显示输入密码. 三.问题呈现 1.生成免密钥对 [[email protected] ~]$ 

SSH公钥登录原理

在平时工作中我们经常要远程登录服务器,这就要用到SSH协议: $ ssh [email protected] 主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录 密码口令登录 通过密码进行登录,主要流程为: 1.客户端连接上服务器之后,服务器把自己的公钥传给客户端 2.客户端输入服务器密码通过公钥加密之后传给服务器 3.服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录 公钥登录 公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含: 1.客

[linux]SSH公钥登录

由于口令密码容易泄露,SSH公钥登录相比口令登录更加安全.SSH可以轻松使用非对称加密技术给两台机子订立契约,步骤如下: 第一步 本地机生成秘钥对 指令:ssh-keygen 功能:在本地(~/.ssh/)产生公钥(id_rsa.pub)与私钥(id_rsa),其中私钥是本机使用的,不能泄露.公钥提供给远程服务器,追加到对方的公钥文件中(~/.ssh/authorized_keys). ssh-keygen -t rsa -P '' 这样本地的目录~/.ssh/中就会出现两个文件 id_rsa.

ssh使用公钥登录客户端设置

先  ssh-keygen 生成一对密钥  然后将 公钥上传到服务器 然后 cat xx.pub >> .ssh/authorized_keys 然后 客户端 怎么让 ssh 登录的时候 知道要使用哪个 私钥呢 ... 编辑 .ssh/config host 69.11.11.252 user git hostname server port 22 identityfile ~/.ssh/admin 其实只需要指定  host user 还有最后的私钥就行了... 本文来自:Linux教程网

SSH公钥登录访问(配置实验)

ssh公钥认证配置: 本地(10.10.86.102) [[email protected] ~]# ssh-keygen -t rsa -P '' 密码为空,则输入密码时之间按ENTER回车 -P '' ,表示密码为空,也可以不按-P,则要按三次回车 id_rsa        私钥 id_rsa.pub    公钥 不同类型的密钥 ssh-keygen -t dsa ssh-keygen -t rsa(一般使用ssh的rsa密钥) ssh-keygen -t rsal 在本地~/.ssh/目

授权公钥登录,sudo权限脚本

#!/bin/bash ############################################################## # File Name: key_auth.sh # Version: V1.0 # Author: Li Shi Chao # Created Time : 2018-06-08 13:47:42 # 博客园地址:www.cnblogs.com/root0/p/ ##########################################

配置github SSH公钥登录

git的安装见https://www.cnblogs.com/liliyang/p/9829931.html 配置git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选: 若git使用https协议,每次pull, push均提示要输入密码,使用git协议,然后使用ssh密钥对认证,即可实现免密 配置git 通过ssh协议免密需要三个步骤: 1.生成密钥对 2.配置远程仓库(这里使用github)上的公钥 3.把git的 remote url 修改

ssh配置公钥私钥(key)登录SecureCRT

在用windows时管理linux服务器时,常会用到SecureCRT.Xshell以及开源的putty.在我工作环境大多都是采用密码认证的方式进行登录.今天对学习了些SecureCRT的密钥登录方式.对比密码认证方式,使用密钥认证登录会有以下几个优点: 1.公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦2.多用户管理服务器时,可以通过多个公钥登录同一用户下,可以避免因为密码认证被用户都需要密码,导致的密码容易泄密的危险.并且使用passwd修改密码,也不会影响到其他用户的登录.3.做

centos7 创建普通用户,添加sudo权限,禁止root远程登录和公钥登录脚本

笔记: groupadd 6lxx useradd -s /bin/sh -d /home/6lxx -g 6lxx -m 6lxx echo "KFi0Tu45"|passwd --stdin 6lxx sed  -i '/^root/a\6lxx   ALL=(ALL)       ALL' /etc/sudoers sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config cat /etc/s