SSH的ssh-keygen命令基本用法详解

ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。

在用户目录的home目录下,有一个.ssh的目录,和当前用户ssh配置认证相关的文件,几乎都在这个目录下。

ssh-keygen 可用来生成ssh公钥认证所需的公钥和私钥文件。

使用 ssh-keygen 时,请先进入到 ~/.ssh 目录,不存在的话,请先创建。并且保证 ~/.ssh 以及所有父目录的权限不能大于 711

生成的文件名和文件位置

使用 ssh-kengen 会在~/.ssh/目录下生成两个文件,不指定文件名和密钥类型的时候,默认生成的两个文件是:

id_rsa

id_rsa.pub

第一个是私钥文件,第二个是公钥文件。

生成ssh key的时候,可以通过 -f 选项指定生成文件的文件名,如下:

[huqiu@101 .ssh]$ ssh-keygen -f test  -C "test key"
               ~~文件名  ~~~~ 备注

如果没有指定文件名,会询问你输入文件名:

[huqiu@101 .ssh]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/huqiu/.ssh/id_rsa):

你可以输入你想要的文件名,这里我们输入test。

之后,会询问你是否需要输入密码。输入密码之后,以后每次都要输入密码。请根据你的安全需要决定是否需要密码,如果不需要,直接回车:

[huqiu@101 .ssh]$ ssh-keygen -t rsa -f test -C "test key"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

如果文件名是test,结果是:

[huqiu@101 .ssh]$ ll test*
-rw------- 1 huqiu huqiu 1675 Sep 15 13:24 test
-rw-r--r-- 1 huqiu huqiu 390 Sep 15 13:24 test.pub

上面生成的命令中,-C选项是公钥文件中的备注:

[huqiu@101 .ssh]$ cat test.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAlgjiMw7AskxbvpQY9rmZPQxQBzh9laxFvbaini2EgmQkNsXBA9WJOXn2YBJauoiVsdUKBWA97avjsobrTxsCYvFr1yQQvTfTlbqlqGNIhQc/3HjTl2pIkClpDWvBrRN+jpyESS4MNbfOL1qjT4c/QhGvj6U6HrN6kUyn58oyyJpTzOLG74AZELJ2Led57QvTw1yJXZuAMWioR0A3BGd25fdocLX3ebux6ya8AsloOVYfsAqGlggrARe6FXjLfMH4a/nxaAdiDYVXU/Vr1ybK9P7SfyEDGJi3JtgiPUlA6vPxUC
E+9IJPQaqqeqCGzrJ6G/XO7om1v9YLLG/H/ZN2tQ== test key
                      ~~~~备注

为了让私钥文件和公钥文件能够在认证中起作用,请确保权限正确。

对于.ssh 以及父文件夹,当前用户一定要有执行权限,其他用户最多只能有执行权限。

对于公钥和私钥文件也是: 当前用户一定要有执行权限,其他用户最多只能有执行权限。

以上既是SSH的ssh-keygen命令基本用法希望对大家有用,更多关于ssh-keygen用法的文章请查看以下相关文章

(0)

相关推荐

  • SSH 上传文件及文件夹到linux服务器的方法

    现在服务器linux很多.是不是不会传文件?别急 下面就是方法: 一.上传文件到linux服务器 首先从你本地切换到你要上传文件的目录,接下来: scp 文件名字 服务器用户名字@服务器ip:目录 例子: scp index.html root@58.87.124.110:/home/service-tomcat/webapps/ 二.上传文件夹到linux服务器 同文件上传只是在文件名字前面加上-r 例子: scp static/ root@58.87.124.110:/home/servic

  • 实现一台或者多台Linux实例解绑SSH密钥对

    DetachKeyPair 为一台或者多台 Linux 实例解绑 SSH 密钥对. 描述 使用该接口时,请注意: 解绑 SSH 密钥对后,您需要重启实例(RebootInstance)使更改生效. 解绑 SSH 密钥对后,实例默认使用用户名和密码的验证方式. 请求参数 返回参数 全是公共返回参数.参阅 公共参数. 示例 请求示例 https://ecs.aliyuncs.com/?Action=DetachKeyPair &RegionId=cn-qingdao &InstanceIds=

  • SSH端口转发,本地端口转发,远程端口转发,动态端口转发详解

    第一部分 SSH端口转发概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我们带来什么好处吧! SSH端口转发概述 让我们先来了解一下端口转发的概念吧.我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发. 它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自

  • 用Go写一个轻量级的ssh批量操作工具的方法

    前言 这是一个轮子. 大家都知道 Ansible是功能超级强大的自动化运维工具,十分的高大上.太高大上了以至于在低端运维有点水土不服,在于三点: Ansible 是基于 Python 的,而 Python 下的安装是有一堆依赖的...不要笑!对于很多使用 Win 的用户而言,光是装 Python, 装 pip 就够喝一壶的了. Ansible 的 paybook 所使用的 yaml 语法当然非常强大了.然而对于新人而言,刚入手是玩不转的,需要学习.虽然 Ansible 相比其他的自动化运维工具,

  • windows安装openssh并通过生成SSH密钥登录Linux服务器

    SSH的英文全称是Secure SHell.通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗.还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度.SSH有很多功能,它既可以代替telnet,又可以为ftp.pop.甚至ppp提供一个安全的"通道" 最初SSH是由芬兰的一家公司开发的.但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH OpenSSH是SSH协议的

  • 深入浅析SSH的三个组件ssh、sftp、scp

    SSH  包含3个组件 (1) ssh 远程登录节点 : ssh 用户名@IP地址 ① 不允许空密码或错误密码认证登录 ② 不允许root用户登录 ③ 有两个版本 ssh,ssh2安全性更高 (2) sftp 文件共享连接 , xftp连接就是 sftp实现的 (3)scp  文件拷贝共享 scp命令 :两节点文件的拷贝传输 (1)向目标节点传文件 : scp  路径/文件名 用户名@IP地址:目录 如:向127.0.0.1节点的root用户/tmp 下传文件 scp 路径/文件名 root@1

  • CentOS6.5与CentOS7 ssh修改默认端口号的方法

    本文实例讲述了CentOS6.5与CentOS7 ssh修改默认端口号的方法.分享给大家供大家参考,具体如下: CentOS6.5ssh修改默认端口号 先查看下服务器端口号范围: # sysctl -a|grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 新ssh端口号在这个范围内即可,如41134 第一步: vi /etc/sysconfig/iptables 找到现有的ssh那行,把22修改为新的SSH端口号

  • PyCharm设置SSH远程调试的方法

    一.环境 系统环境:windows10 64位 软件:PyCharm2017.3 本地Python环境:Python2.7 二.配置 2.1配置远程调试 第一步:运行PyCharm,然后点击设置如下图 第二步:添加远程的调试环境(选择SSH远程) 然后进入下面界面添加: 第三步:配置本地到远程主机的同步 然后进入下面页面具体配置同步信息,配置完成以后点击OK即可: 2.2配置编码(解决远程start ssh session乱码问题) 第一步: ----> File --> settings -

  • 创建支持SSH服务的Docker镜像的方法

    摘要:通常Linux系统管理员通过SSH服务来管理OS,但Docker的很多镜像是不带SSH服务的,可以通过attach(遇到假死的现象)或者exec(目前测试ok)的方法进入容器来管理,但是这些命令都无法解决远程管理容器的问题,因此,当需要远程登陆到容器内进行一些操作的时候,就需要SSH的支持了.本文记录如何使用docker commit创建一个带有SSH服务的ubuntu镜像. (1) 首先以交互的方式运行我们本地的ubuntu容器 docker run -it ubuntu:14.04 /

  • ubuntu16.04安装ssh服务并实现远程访问的方法

    一.查看是否安装了ssh服务 apt-cache policy openssh-client openssh-server ubuntu默认安装了openssh-client,openssh-server需要手动安装 二.安装ssh服务 apt-get install openssh-server 三.查看ssh服务的开启状况 ps -e|grep ssh 如果出现sshd,则ssh服务已开启.如果只有agent,则尚未开启成功 四.开启ssh服务 /etc/init.d/ssh start 五

  • SSH原理及两种登录方法图文详解

    SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密. 传统的对称加密使用的是一套秘钥,数据的加密以及解密用的都是这一套秘钥,可想而知所有的客户端以及服务端都需要保存这套秘钥,泄露的风险很高,而一旦秘钥便泄露便保证不了数据安全. 非对称加密解决的就是这个问题,它包含两套秘钥 - 公钥以及私钥,其中公钥用来加密,私钥用来解密,并且通过公钥计算不出私钥,因此私钥谨慎保存在服务端,而公钥可以随便传递,即使泄露也无风险.

  • 使用PSSH批量管理Linux服务器

    pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器:pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的:比起for循环的做法,我更推荐使用pssh!使用pssh的前提是:必须在本机与其他服务器上配置好密钥认证访问(即ssh信任关系). 下面就说下使用pssh进行批量操作的记录: 1)安装pssh 可以yum直接安装: [root@bastion-IDC ~]# yum install -y pssh 2)pssh用法 [root@ba

  • SSH远程登录和端口转发详解

    介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实现 OpenSSH 远程登录 SSH主要用于远程登录: $ ssh user@host 当本地用户名和远程用户名一致时,可省略用户名: $ ssh host SSH 协议默认端口是22,指定端口可使用 -p 参数 $ ssh -p 2222 user@host MITM SSH 采用公钥加密的方式来保证传输安全.过程如下: 客户端发起

  • Redis未授权访问配合SSH key文件利用详解

    前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis 未授权访问的问题是一直存在的问题,知道创宇安全研究团队历史上也做过相关的应急,今日,又出现 Redis 未授权访问配合 SSH key 文件被利用的情况,导致一大批 Redis 服务器被黑,今天我们来简要的分析下. 一.漏洞概述 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有

  • Spring+Hibernate+Struts(SSH)框架整合实战

    SSH框架整合 前言:有人说,现在还是流行主流框架,SSM都出来很久了,更不要说SSH.我不以为然.现在许多公司所用的老项目还是ssh,如果改成主流框架,需要成本.再说比如金融IT这一块,数据库dao层还是推荐使用的是hibernate,因为能够快速开发上手,除非是互联网,因涉及到高并发,dao层用的是mybatis,数据交互效率较快.所以,SSH不容忽略. 一.什么是SSH SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架. 集

  • 利用python 更新ssh 远程代码 操作远程服务器的实现代码

    用python paramiko ssh 服务器,并pull对应目录代码的脚本 pull.py import paramiko import sys def sshclient_execmd(hostname, port, username, password, execmd): paramiko.util.log_to_file("paramiko.log") s = paramiko.SSHClient() s.set_missing_host_key_policy(paramik

  • 详解基于django实现的webssh简单例子

    本文介绍了详解基于django实现的webssh简单例子,分享给大家,具体如下: 说明 新建一个 django 程序,本文为 chain. 以下仅为简单例子,实际应用 可根据自己平台情况 进行修改. 打开首页后,需要输入1,后台去登录主机,然后返回登录结果. 正常项目 可以post 主机和登录账户,进行权限判断,然后去后台读取账户密码,进行登录. djang后台 需要安装以下模块 安装后会有一个版本号报错,不影响 channels==2.0.2 channels-redis==2.1.0 amq

  • rsync指定ssh端口进行文件同步的方法

    有台服务器因为安全性需要,修改了默认的ssh端口为34778端口. 因此rsync使用ssh同步的时候需要指定ssh的端口 rsync提供了一个-e参数 -e参数的作用是可以使用户自由选择想使用的shell程序来连接远端服务器,因此也可以设置成使用默认的ssh来连接,这样我们就可以加入ssh的参数了 具体语句写法如下: rsync -e 'ssh -p 34778' username@hostname:SourceFile DestFile 单引号,目的是为了使引号内的参数为引号内的命令所用 实

  • CentOS7增加或修改SSH端口号的方法

    前言:开启某服务或软件的端口,要从该服务或软件监听的端口(多以修改配置文件为主),SeLinux和防火墙(FireWall)的安全策略下手.如果使用阿里云,腾讯等第三方服务器还需要对管理控制台的安全组下手. 下面进入主题,如果有什么问题请查看下面的补充栏: 第一步:修改SSH配置文件(注意是sshd_config而不是ssh_config,多了个d) vim /etc/ssh/sshd_config 找到"#Port 22",这一行直接键入"yyp"复制该行到下一行

随机推荐