SSH客户端 (通过密匙连接远程linux主机)

导读:

在这篇文章中,主要谈及如何利用ssh-keygen生成密匙对,并且在windows本地机利用密匙远程连接linux主机,而代码将用python来实现。

1. ssh-keygen

1.1SSH密钥

SSH密钥可以认为是和另一台电脑通信时的唯一的识别证,利用SSH密钥对可以让我们方便的登录到 SSH 服务器,这样不需要输入密码,也更加安全。而这里我们利用ssh-keygen来生成ssh 密钥。

服务端在后台运行并响应来自客户端的连接请求,默认在22端口进行监听,服务端一般是sshd进程,提供了对远程连接的处理,一般包括密钥认证、密钥交换、对称密钥加密和非安全连接。

客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等应用程序。

1.2利用ssh-keygen生成ssh 密钥

利用ssh-keygen生成ssh 密钥:

命令:ssh-keygen -t [rsa|dsa]

加密方式rsa、dsa均可选,默认是dsa。运行命令将会生成私钥文件和公钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub。

如果在root用户下生成密匙对,那么文件在/root/.ssh下。

生成密匙的时候,可以通过-f指定生成文件的文件名,例如:

 ssh-keygen-t rsa -f ~/.ssh/id_rsa

2.用Python写的SSH客户端

在ssh_key.py添加如下代码:

#-*- coding:utf-8 -*-
import paramiko

#使用密钥连接远程主机
def ssh_command(ip,port,username,command):
    # 创建SSH对象
    client = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #利用密匙
    key="G:/root/ssh/id_rsa"
    client.load_system_host_keys()
    #连接服务器
    client.connect(ip, port, username, key_filename=key)
    # 直接使用SSHClient对象的exec_command()在服务端执行命令
    stdin,stdout,stderr = client.exec_command(command)
    receive = stdout.read()
    # 打印输出
    print receive.decode('utf-8')
    # 关闭连接
    client.close()
ssh_command('192.168.1.175',22,'root','ls')

3.在win10下利用密匙远程连接Linux主机

3.1制作密钥对

在远程主机linux上的终端执行以下命令,通过-f指定了生成文件的文件名,通过-P指定了无密码:

ssh-keygen -t rsa -f ~/.ssh/id_rsa -P""

 

在/root/.ssh下可以看到,已经生成了私匙和公钥。

 

3.2在远程主机linux上配置公钥

公钥一般命名为authorized_keys,这是因为sshd的配置文件默认名字是这个,为了避免出现奇怪的问题,最好这样命名。所以我们进入/root/.ssh/目录下,把id_rsa.pub拷贝到authorized_keys文件中,在终端执行命令如下:

cd /root/.ssh/

cat id_rsa.pub >> authorized_keys

设置一下文件权限:

chmod 600 authorized_keys

chmod 700 ~/.ssh

 

3.3在本地主机win10上配置私匙

我们在Linux上已经配置好了公钥,现在是时候在本地主机win10上配置私匙了。

选择一个磁盘,把刚才制作的私匙文件id_rsa放在“G:\root\ssh”目录下,注意一定要把磁盘的名字改为英文,中文会出问题。

 

3.4配置sshd_config

打开/etc/ssh/sshd_config,我们需要配置它。在sshd_config文件中,默认将密钥认证这种登录方式给注释了,所以我们需要去掉前面的注释符号#。

 

3.5利用python代码去远程连接Linux

运行python2 ssh_key.py,结果如下,我们成功的在win10上利用私匙远程连接了linux。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

午夜安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值