ssh远程控制

Posted ydqq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh远程控制相关的知识,希望对你有一定的参考价值。

什么是SSH

ssh是一种网络协议,用于计算机之间的加密登录


配置OpenSSH 服务端

OpenSSH服务器由 openssh , openssh-server等软件包提供(默认已安装),并已添加为标准系统服务。

配置文件:

/etc/ssh/sshd_config

服务监听选项:

port 22    //监控端口为22(默认)
protocol 2    //使用ssh v2协议
listenAddress 192.168.1.155    //监听地址为192.1681.55
UseDNS no    //禁用DNS反向解析

#service sshd reload    //重新载入

用户登录控制:
sshd默认允许root登录,但是在internet中为了安全应该禁止root登录,先用普通用户登录到服务器,再su 到root权限。

sshd服务用户登录限制:
1). 禁止root用户,或密码为空的用户登录
2). 限制登录验证时长(默认为2分钟)
3). 限制用户重复登录次数。

#vim /etc/ssh/sshd_config
PermitRootLogin on        //禁止root用户登录
PermitEmptyPasswords on        //禁止空密码用户登录
LoginGraceTime 2m        //用户登录验证时长
MaxAuthTries 6        //最大重复登录次数

# service sshd reload

允许,拒绝某个用户,从某个IP登录,允许和拒绝不能同时出现

AllowUsers 用户@IP           //允许登录
DenyUsers 用户@IP        //拒绝登录

例:

只允许dyq和zhangsan从192.168.1.0网段登录(多用户间用空格分隔)
AllowUsers dyq@192.168.1.0 zhangsan        //多用户之间用空格分隔

登录验证方式:
1. 密码登录验证:比较简单的方法,通过本地的密码就可以登录服务器。
2. 密钥登录验证:生成公钥私钥的方法来验证登录。公钥需要保存在客户机端。
一般两种验证方式同时开启,系统会优先选择秘钥验证的方法登录。在安全级别比较高的服务器上要一般只开秘钥验证方式。
怎么生成公钥私钥,后面讲。

#vim /etc/ssh/sshd_config
PasswordAuthentication yes        //启动密码验证
PubkeyAuthentication yes        //启用秘钥验证
AuthorizedKeysFile  .ssh/authorized_keys        //指定公钥库数据文件

#service sshd reload 

客户端(clients)连接方式

两种远程连接方式,一种是通过命令连接(命令界面常用),另一种是通过客户端连接(win常用)

命令连接服务端

ssh远程登录

格式:

ssh [-p port] username@IPaddress

如果端口不是默认的22端口的话,则需要用到参数 -p 制定端口。

scp远程复制
scp命令可以把本地的文件复制到远程服务器上,或把服务器上的文件复制到本地来。

复制文件报错解决地址:
http://www.07net01.com/linux/bash__scp__command_not_found_lost_connectionwentijiejue_15485_1347695526.html

格式:

scp -r [要复制的文件] [目标文件] -P 

参数:

-r        //复制整个目录
-P(大写)        //指定端口
更多参数 man scp

例:

服务器复制到本地
# scp -P 50022 dyq@192.168.1.11:/home/dyq/132 /root/123
本地复制到服务器,把顺序反过来就好了。
# scp -P 50022  /root/dd.sql dyq@192.168.1.11:/home/dyq

sftp 安全 FTP

sftp是ssh协议中的一种,可以模拟FTP协议,输入密文传输比FTP协议要安全。
使用sftp命令连接服务器时,服务器必须开启FTP服务,否则无法连接。

格式:

sftp user_name@IPaddress

以上三种命令只是简单介绍,里面有更多的参数和形式要发掘,详细信息可以查询资料或者man帮助文档。

WIN上客户端连接远程服务这里就不多做叙述了。


构建密钥验证的SSH体系

概念:
密钥验证的形式比密码验证具有更高的安全性。这里要记住两个文件:id_rsa 是私钥;id_rsa.pub 是公钥。
密钥验证工作过程:
一步:生成公钥(id_rsa.pub)私钥(id_rsa)。
二步:上传公钥文件(id_rsa.pub)
三步:导入公钥信息,~/.ssh/authorized.keys
四步:公钥跟私钥验证。

在客户端创建密钥对
linux中通过工具 ssh-keygen 可以生成密钥文件,密钥文件具有两种加密算法:RSA或DSA(使用任意一种就好)

格式:

ssh-keygen -t [加密算法RSA;DSA]

参数:

-t         //指定加密算法
更多参数:man ssh-keygen

例:遇到交互一般直接回车就好了。

确认密钥是否存在:

# ls -lh ~/.ssh

密钥要保存好,不要泄露给别人。

将公钥上传到服务器
上传密钥可以通过多种方式(复制粘贴,FTP,samba,HTTP,email)下面用scp命令上传。

# scp -P 50022 ~/.ssh/id_rsa.pub dyq@192.168.1.11:/home/dyq/
dyq@192.168.1.11's password: 
id_rsa.pub            100%  408     0.4KB/s   00:00

在服务器中导入公钥文件
密钥保存在~/.ssh/authorized_keys 文件中

操作:

# mkdir ~/.ssh        //没有.ssh文件,就要手动创建
# cat /home/dyq/id_rsa.pub >> ~/.ssh/authorized_keys      //重定向导入
# tail -l /home/dyq/.ssh/authorized_keys        //查看验证

由于默认采用严格的权限检测模式(StrictModes yes),因此要求 .ssh的权限只能有属主的权限,属组,其他用户,不能拥有权限,否则验证失败。

在客户端使用密钥验证
当上三步部署成功以后就可以直接通过密钥验证的方式登录了。

以上是关于ssh远程控制的主要内容,如果未能解决你的问题,请参考以下文章

100 模拟ssh远程执行命令

SSH远程管理,构建密钥对验证的SSH体系,设置SSH代理功能。

使用python子进程和ssh读取远程文件?

SSH 只能用于远程 Linux 主机?那说明你见识太小了!

SSH 只能用于远程 Linux 主机?那说明你见识太小了!

重启服务后无法通过 ssh 运行 mysql 控制台