码迷,mamicode.com
首页 > 其他好文 > 详细

ssh服务以及OpenSSLssh

时间:2018-09-15 19:19:32      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:因此   auth   好的   服务器端   ext   参数   实现   phrase   下载   

ssh软件由两部分组成:ssh服务端和ssh客户端。

  ssh的配置文件在/etc/ssh/目录下,其中服务端的配置文件是sshd_config,客户端的配置文件是ssh_config.
  安装ssh,在这里,只讲述通过yum安装的方法(前提是你的yum源配置正确,并且能使用):

yum install openssh-* -y yum会自动安装所有openssh相关的软件包

配置ssh服务器

根据ssh的两种验证方式,配置两种不能安全级别的登录方式。
  ·通过口令验证方式登录

1.用vim编辑器打开sshd_config配置文件

vim /etc/ssh/sshd_config

2.对配置文件进行如下修改(根据自身实际情况可有所调整):
  Port 22 //默认使用22端口,也可以自行修改为其他端口,但登录时要打上端口号
  #ListenAddress //指定提供ssh服务的IP,这里我注释掉。
  PermitRootLogin //禁止以root远程登录
  PasswordAuthentication yes //启用口令验证方式
  PermitEmptyPassword //禁止使用空密码登录
  LoginGraceTime 1m //重复验证时间为1分钟
  MaxAuthTimes 3 //最大重试验证次数
  保存修改好的配置,退出。

3.重启sshd服务

service sshd restart

通过密钥对验证方式登录

1.在客户端生成密钥对

注:生成密钥对前,需切换相应用户身份。例如:当user1需要登录到服务端时,user1必须在客户端生成自己的密钥文件。其他用户也一样。

#su - user1

#ssh-keygen -t rsa //生成密钥文件

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:
33:ee:01:7d:c3:74:83:13:ef:67:ee:d7:60:2d:e1:16 root@localhost

#ll -a .ssh/

drwxrwxrwx 2 root root 4096 10-08 19:29 .
drwxr-x--- 21 root root 4096 10-08 19:25
-rw------- 1 root root 1743 10-08 19:29 id_rsa //创建的私钥
-rw-r--r-- 1 root root 396 10-08 19:29 id_rsa.pub //创建的公钥
-rw-r--r-- 1 root root 790 2015-11-04 known_hosts

2.上传公钥文件到服务器或者用U盘拷贝到服务器里

#scp .ssh/id_rsa.pub user1@192.168.1.100:/home/user1/

3.在服务器端,将公钥文件添加到相应用户的密钥库里

mkdir -p /home/user1/.ssh/ //注意,这里创建的。ssh目录权限必需是除自己外,对其他用户只读,也就是权限位设置为644,所属者与所属者组都是其用户

mv /home/user1/id_rsa.pub /home/user1/,ssh/authorized_keys //由于生成的公钥名称与指定的公钥名称不符,因此需要将生成的文件名换成authorized_keys即可。

4.修改sshd_config配置文件

vim /etc/ssh/sshd_config

PasswordAuthentication no //禁用口令验证方式,不能把原有的PasswordAuthentication yes注释掉,注释后,就算没有公钥也能通过口令登录,这样不安全,而且失去了密钥验证的意义。
RSAAuthentication yes //启用RSA验证
PubkeyAuthentication yes //启用公钥验证
AuthorizedKeysFile .ssh/authorized_keys //启用公钥文件位置,后面的路径是设置公钥存放文件的位置
保存修改好的配置,退出。sshd_config配置文件[点击打开链接

5.重启sshd服务

#service sshd restart

sftp命令

交互式文件传输工具
用法和传统的ftp工具相似
利用ssh服务实现安全的文件上传和下载
使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息
sftp [user@]host

pssh工具

pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器;pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的;比起for循环的做法,我更推荐使用pssh!使用pssh的前提是:必须在本机与其他服务器上配置好密钥认证访问(即ssh信任关系)。

1)安装pssh

可以yum直接安装:
[root@bastion-IDC ~]# yum install -y pssh

2)pssh用法

[root@bastion-IDC ~]# pssh --help
-h 执行命令的远程主机列表文件
-H user@ip:port 文件内容格式[user@]host[:port]
-l 远程机器的用户名
-p 一次最大允许多少连接
-o 输出内容重定向到一个文件
-e 执行错误重定向到一个文件
-t 设置命令执行的超时时间
-A 提示输入密码并且把密码传递给ssh(注意这个参数添加后只是提示作用,随便输入或者不输入直接回车都可以)
-O 设置ssh参数的具体配置,参照ssh_config配置文件
-x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
-X 同-x 但是一次只能传递一个命令
-i 显示标准输出和标准错误在每台host执行完毕后
-I 读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入

3)pssh实例说明

cat hosts.txt //列表文件内的信息格式是“ip:端口”,如果本机和远程机器使用的ssh端口一致,则可以省去端口,直接用ip就行。不过建议还是将端口都带上为好。
192.168.1.101:22
192.168.1.109:22
192.168.1.118:25791
192.168.1.105:25791
如上四台机器放在一个列表文件hosts.txt内,本机已经和这四台机器做了ssh无密码登陆的信任关系

注意:列表文件内的机器必须提前和本机做好ssh信任关系,如果没有做的话,那么pssh批量执行时,轮到这台没有做信任关系的机器时就不会执行

a)批量执行命令

[root@bastion-IDC ~]# pssh -h hosts.txt -l root -i ‘uptime‘

如果添加-A参数,那么即使提前做了ssh信任关系,还是会提示输入密码!

[root@bastion-IDC ~]# pssh -h hosts.txt -l root -i -A ‘uptime‘
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: //注意这个参数添加后只是提示作用,可以在此随便输入或者不输入直接回车都可以

b)批量上传文件或目录(pscp.pssh命令)

1.批量上传本地文件/mnt/test.file到远程服务器上的/tmp目录:

pscp.pssh -l root -h hosts.txt /mnt/test.file /tmp/

2.批量上传本地文件/mnt/test.file、/mnt/aa.file、/mnt/bb.file到远程服务器上的/tmp目录:

pscp.pssh -l root -h hosts.txt /mnt/test.file /mnt/aa.file /mnt/bb.file /tmp/或者

pscp.pssh -l root -h hosts.txt /mnt/{test.file,aa.file,bb.file} /tmp/

3.批量上传本地目录/mnt/zhong到远程服务器上的/tmp目录(上传目录需要添加-r参数):

pscp.pssh -l root -h hosts.txt -r /mnt/zhong /tmp/

c)批量下载文件或目录(pslurp命令)

1.批量下载服务器上的某文件到本地,不用担心重名问题,因为pssh已经建立了以文件列表内的ip为名称的目录来存放下载的文件:

pslurp -l root -h hosts.txt /etc/hosts

另外特别注意:
上面的批量下载操作,只能下载到本地的当前目录下,不能在命令中跟指定的路径:

2.pslurp -l root -h hosts.txt /etc/hosts /mnt/

3.要想下载到本机的/mnt目录下,正确的做法是先切换到/mnt目录下,然后再执行下载命令:(列表文件要跟全路径)**

cd /mnt/

pslurp -l root -h /root/hosts.txt /etc/hosts ./

4.上面是批量下载文件,要是批量下载目录,只需要添加一个-r参数即可!

pslurp -l root -h /root/hosts.txt -r /home/ ./

d)批量同步(prsync命令)

1.同步本机/mnt/test目录下的文件或目录到远程机器的/mnt/test路径下

prsync -l root -h hosts.txt -r /mnt/test/ /mnt/test/

2.同步本机/mnt/test目录下的文件或目录到远程机器的/mnt路径下

prsync -l root -h hosts.txt -r /mnt/test/ /mnt/

注意:
上面批量同步目录操作是将本机对应目录数据同步到远程机器上,远程机器上对于目录下多余的文件也会保留(不会删除多余文件)

同理,批量同步文件操作,去掉-r参数,
注意:同步文件的时候,其实就是完全覆盖,远程机器对应文件内的文件会被全部替换!

3.同步本机的/mnt/test/file文件内容到远程服务器/mnt/test/file文件内

prsync -l root -h hosts.txt /mnt/test/file /mnt/test/file

e)批量kill远程机器上的进程(pnuke命令)

比如批量kill掉远程机器上的nginx进程

pnuke -h hosts.txt -l root nginx

SSH端口转发

技术分享图片

1、创建iptables,拒绝 192.168.30.69 连接 192.168.30.75

技术分享图片

2、启用 192.168.30.75 上的 telnet 服务端口
技术分享图片

本地端口转发

本地主机是192.168.30.69

语法:ssh -L 本地端口:目标主机地址:目标端口 SSH服务器地址

技术分享图片
技术分享图片
技术分享图片

选项

-f 后台启用
-N 不打开远程shell,处于等待状态
-g 启用网关功能

转发过程:data<->localhost:1024<->localhost:XXXXX<->sshsrv:22 <->sshsrv:YYYYY<->telnetsrv:23

远程端口转发

本地主机是192.168.30.74
技术分享图片
语法:ssh -R 远程端口:目标主机地址:目标端口 SSH服务器地址
技术分享图片

转发过程:data<->sshsrv:1024<->sshsrv:22<->localhost:XXXXX<->localhost:YYYYY<->telnetsrv:23

ssh服务以及OpenSSLssh

标签:因此   auth   好的   服务器端   ext   参数   实现   phrase   下载   

原文地址:http://blog.51cto.com/13958408/2175620

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!