标签:因此 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
交互式文件传输工具
用法和传统的ftp工具相似
利用ssh服务实现安全的文件上传和下载
使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息
sftp [user@]host
pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器;pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的;比起for循环的做法,我更推荐使用pssh!使用pssh的前提是:必须在本机与其他服务器上配置好密钥认证访问(即ssh信任关系)。
可以yum直接安装:
[root@bastion-IDC ~]# yum install -y 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进程 允许命令脚本传送到标准输入
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批量执行时,轮到这台没有做信任关系的机器时就不会执行
[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: //注意这个参数添加后只是提示作用,可以在此随便输入或者不输入直接回车都可以
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/
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/ ./
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
比如批量kill掉远程机器上的nginx进程
pnuke -h hosts.txt -l root nginx
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
标签:因此 auth 好的 服务器端 ext 参数 实现 phrase 下载
原文地址:http://blog.51cto.com/13958408/2175620