Linux生成私钥和公钥免密连接

A为本地主机(即用于控制其他主机的机器) ;

B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ;

A和B的系统都是Linux

在A上的命令:

# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

# ssh [email protected] "mkdir .ssh;chmod 0700 .ssh" (需要输入密码, 注:必须将.ssh的权限设为700)

# scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub (需要输入密码)

在B上的命令:

# touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)

# chmod 600 ~/.ssh/authorized_keys  (# 注意: 必须将~/.ssh/authorized_keys的权限改为600, 该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来指定其他文件名

# cat /root/.ssh/id_rsa.pub  >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到 authorized_keys 中, 注意不要用 > ,否则会清空原有的内容,使其他人无法使用原有的密钥登录)

回到A机器:

# ssh [email protected] (不需要密码, 登录成功)

假如在生成密钥对的时候指定了其他文件名(或者需要控制N台机器,此时你会生成多对密钥),则需要使用参数-i指定私钥文件

# ssh [email protected] -i /path/to/your_id_rsa

scp也是一样,如:

scp -i /root/.ssh/id_rsa  ./xxx 192.168.102.158:/home/wwy/bak

因为默认情况下ssh命令会使用~/.ssh/id_rsa作为私钥文件进行登录,如果需要连接多台服务器而又不希望每次使用ssh命令时指定私钥文件,可以在ssh的客户端全局配置文件/etc/ssh/ssh_config(或本地配置文件~/.ssh/config, 如果该文件不存在则建立一份)中增加如下配置

IdentityFile /path/to/your_id_rsa.

也可以为每个服务器指定一个Host配置:

Host 172.24.253.2

IdentityFile /path/to/your_id_rsa

如果连接时出现如下的错误:

Agent admitted failure to sign using the key

则使用 ssh-add 指令將私鑰 加進來 (根据个人的密匙命名不同更改 id_rsa)

1 ssh-add   ~/.ssh/id_rsa

如果能保护好自己的私钥, 这种方法相对在shell上输入密码, 要安全一些

#########################################################################

深入一点点:

从表面上简单的理解一下登录的过程,

首先 ssh-keygen -t rsa 命令生成了一个密钥和一个公钥, 而且密钥可以设置自己的密码

可以把密钥理解成一把钥匙, 公钥理解成这把钥匙对应的锁头,

把锁头(公钥)放到想要控制的server上, 锁住server, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入server并控制

而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没设置密码), 这样就可以防止钥匙被了配了(私钥被人复制)

当然, 这种例子只是方便理解罢了,

拥有root密码的人当然是不会被锁住的, 而且不一定只有一把锁(公钥), 但如果任何一把锁, 被人用其对应的钥匙(私钥)打开了, server就可以被那个人控制了

所以说, 只要你曾经知道server的root密码, 并将有root身份的公钥放到上面, 就可以用这个公钥对应的私钥"打开" server, 再以root的身分登录, 即使现在root密码已经更改!

---------------------------------------------------------------------------------------

方法二、安装sshpass

# sudo apt-get install sshpass

安装完成后使用sshpass允许你用 -p 参数指定明文密码,然后直接登录远程服务器。例如:

# sshpass -p ‘你的密码‘ ssh 用户名@服务器ip地址

用 ‘-p‘ 指定了密码后,还需要在后面跟上标准的 ssh 连接命令。

Sshd的配置文件/etc/ssh/ssd_config

-------------------------------

ssh无密码验证的情况下向远程主机发送命令

发送一条:

ssh [email protected]_server_ip your_command

ssh [email protected]_server_ip “your_command1; your_command2; your_command3”

原文地址:https://www.cnblogs.com/ExMan/p/10908269.html

时间: 2024-08-30 09:35:50

Linux生成私钥和公钥免密连接的相关文章

linux上如何设置ssh免密登陆

一.linux上ssh链接 1.功能说明 scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下.scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP地址:文件的绝对路径 本地Linux系统路径 scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名 scp使用第一种格式是将远程Linux系统上的某个文件或者目录拷贝到本地Linux系统上来,使用第二种是将本地的某个文件或者目录拷贝

ssh免密连接远程服务器

ssh免密连接远程服务器 借助ssky-keygen和ssh-copy-id工具,通过4个简单的步骤实现无需输入密码登录远程Linux主机 生成密钥 通过内置的工具生成RSA算法加密的密钥 ssh-keygen -t rsa 回车默认选项即可,会在当前用户的home文件下生成密钥文件 拷贝密钥 ssh-copy-id -i .ssh/id_rsa.pub -p port [email protected] 输入目标服务器的用户名user,地址ip,端口port即可(如采用默认22端口可忽略-p)

iOS开发--使用OpenSSL生成私钥和公钥的方法

最近要在新项目中使用支付宝钱包进行支付,所以要调研对接支付宝的接口,支付宝开放平台采用了RSA安全签名机制,开发者可以通过支付宝   公钥验证消息来源,同时可使用自己的私钥对信息进行加密,所以需要在本机上生成私钥和公钥 ... 由此需要开发者在本地上使用openssl来生成私钥和公钥 由于mac 自带openssl工具,所以不用像windows那样要下载安装openssl工具 生成私钥公钥很简单:只要三句命令就可以搞定 打开openssl : $openssl     =====>>     

openssl生成私钥和公钥

openssl生成私钥和公钥 by 伍雪颖 私钥: openssl genrsa -out server.key 1024 公钥: openssl rsa -in server.key -pubout -out server.pem 生成证书CSR文件: openssl genrsa -out server.key 1024 openssl req -new -key server.key -out server.csr openssl x509 -req -in server.csr -sig

使用ssh-keygen生成私钥和公钥

1.使用ssh-keygen生成私钥和公钥 命令如下: ssh-keygen -t rsa 例子: fdipzone@ubuntu:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): 这里输入要生成的文件名 Enter passphrase (empty for no passphrase): 这

Win10配置ssh密钥免密连接Linux服务器

首先Win10系统上需要有OpenSSH,像这样:终端输入ssh 这样就是有的(好像Win10 1809+默认就是有的). 然后生成密钥对: ssh-keygen -t rsa 接着按提示信息可根据个人需求选择,这里是默认(连续三个回车即可). 生成的密钥对默认保存在当前用户的根目录下的.ssh目录中(C:\Users\username\.ssh): 接着我们将公钥id_rsa.pub上传至Linux服务器(保存到你要连接的用户根目录下~/.ssh/中,没有.ssh目录则创建): 至于上传方法可

2.在linux安装ssh_免密连接

Linux开启ssh服务 首先更新源 sudo apt-get update 安装ssh服务 sudo apt-get install openssh-server 检测是否已启动 ps -e | grep ssh 看到有ssh字样,说明已启动,如果没有就手动启动 /etc/init.d/ssh start 配置ssh-server,配置文件位于/etc/ssh/sshd_config,默认端口为22,为了安全,一般自定义为其他端口,然后重启 sudo /etc/init.d/ssh resar

ssh免密连接互信认证

在实际生产环境中我们往往在一些维护时需要多台Linux主机相互连接,那此时就需要做ssh的免密码互信认证,而ssh的免密的互信认证实现比较简单,在此就简单的描述下,为描述方便我把内网中的2台需要做ssh互信认证的2台主机192.168.2.25.192.168.2.26这2台主机,其中以192.168.2.25作为master连接其它主机,以192.168.2.26作为slave,操作如下: [[email protected] ~]# vim /etc/ssh/sshd_config#2台主机

MAC OS下使用OpenSSL生成私钥和公钥的方法

MAC OS自带了OpenSSL,所以不用去编译那一坨跟SHIT一样的源码.直接在命令行里使用OPENSSL就可以. 打开命令行工具,然后输入 openssl打开openssl,接着只要三句命令就可以搞定.第一句命令生成私钥:第二句命令把RSA私钥转换成PKCS8格式,密码为空就行:第三句命令生成公钥. Last login: Fri Sep 12 00:59:51 on ttys000 stormerdeiMac:~ stormer$ openssl OpenSSL> genrsa -out