study-12 SSH服务介绍

来源:互联网 发布:爬虫数据采集解决方案 编辑:程序博客网 时间:2024/05/16 09:12

一,SSH介绍

1,SSH安全的加密协议,用于远程连接服务器

2,默认端口是22,安全协议版本ssh2;

3,服务端主要包含两个服务功能ssh远程连接,sftp服务;

4,ssh客户端包含ssh连接命令、以及远程拷贝scp命令;


二,ssh结构

ssh服务由服务端软件openSSH和客户端组成(SECURECRT,putty等);

查看服务端的ssh和ssl软件版本:

rpm -qa openssh

rpm -qa openssl


三,连接认证

1)基于口令:

ssh -p端口 帐号@IP地址

执行命令必须用命令全路径

2)基于密钥:公钥(服务器端,锁)、私钥(客户端、钥匙);

3)第一次连接的时候,本地家目录会产生一个密钥文件 ~/.ssh/know_hosts


四,SSH附带的SCP命令:

1,本地推到远端(推):scp -P端口 本地文件绝对路径 帐号@目录IP地址:/文件夹绝对路径

( scp -P52113 /tmp/245 oldboy@192.168.1.246:/tmp )

 -r :拷贝目录


2,拉远端到本地(拉):scp -P端口 帐号@目录IP地址:/文件绝对路径 本地文件夹绝对路径 

( scp -P52113 oldboy@192.168.1.246:/tmp/246 /tmp)


SCP :全量拷贝

RSYNC:增量拷贝


五,SSH分发实战

1,具体需求

要求所有服务器在同一用户oldboy系统用户下,实现A机器从本地分发数据到B、C机器上,在分发过程中不需要B、C

的提示系统密码验证,除了分发还需要可以批量查看客户机的CPU、LOAD、MEM、系统版本等使用信息。


即实现从A服务器发布数据到B、C客户端服务器或查看信息的免密码登录验证解决方案分发数据流方式如下:
A ------> B

A-------> C

提示:形象比喻,即一把钥匙(A)开多把锁(B/C)


2,行前准备(1客户端,2服务器端)

1)三台添加系统帐号:很多公司直接用root操作,这样很不规范;

useradd oldboy

echo "123456" |passwd --stdin oldgirl

(如果用户已经存在,可以用userdel -rf 来删除)


2)生成 公钥放服务器端,私钥放客户端

A:su - oldgirl

A:ssh-keygen -t dsa  (买一把钥匙,一直回车)

在家目录下的 .ssh(权限700)文件中生产2个文件(id_dsa和id_dsa.pub(公钥)),私钥权限600,公钥权限644


3)分发公钥(查看端口:netstat -lntup | grep [端口]

A:ssh-copy-id -i .ssh/id_dsa.pub "-p52113 oldgirl@192.168.1.246" 

A:ssh-copy-id -i .ssh/id_dsa.pub "-p52113 oldgirl@192.168.1.247”

(成功后可以看见 246/247的oldgirl家目录下的.ssh/authorized_key)


3,验证:
A:ssh -p52113 oldgirl@192.168.1.246/247  :不用输入密码就可以成功连接了

A:scp -P52113 a.txt oldgirl@192.168.1.247:~  :拷贝a.txt到247的家目录中  或

for n in 246 247
do
scp -P52113 $1 oldgirl@192.168.1.$n:~
done


for n in 246 247
do
ssh -p52113 oldgirl@192.168.1.$n  /sbin/ifconfig eth0|sed -nr 's#^.*dr:(.*).*Bc.*$#\1#gp'
done


解决SCP拷贝慢:

客户端和服务器端修改/etc/ssh/sshd_config 中:

UseDNS no

GSSAPIAuthentication no


重启sshd服务:/etc/init.d/sshd restart


免密码登录小结:

a,免密码是单向的

b,基于用户的,最好不要跨越不同的用户

c,SSH连接慢的问题

d,批量分发1000台初始都需要输入一次密码,并且第一次连接要确认(expect);


4,SSH服务实现sudo提权拷贝文件方案

场景:使用oldgirl用户权限将A家目录中的hosts文件(拷贝/etc/hosts文件到家目录中等待测试用),拷贝到B、C的/etc/目录下

思路:拷贝到远程家目录,sudo提权拷贝到远程/etc/目录下

1)A/B/C:echo "oldgirl  ALL=(ALL)       NOPASSWD: /bin/cp" >> /etc/sudoers

2-1)A:scp -P52113 -rp hosts oldgirl@192.168.1.246:~  :(拷贝文件到远程服务器的家目录)

2-2)A: ssh -p52113 -t oldgirl@192.168.1.246 sudo cp ~/hosts /etc/ :(sudo提权,将远程服务器家目录的文件拷贝到远程服务器的/etc/目录下;默认不允许远程运行sudo命令,所以必须加  -t   的参数)


5,企业级生产场景批量管理、自动化管理方案:

1),最简单最常用 ssh key,功能最强大。一般中小型企业会用,50~100台规模

2),sina cfengine 较早的批量管理工具。现在基本上没有企业用了;

3),门户级别比较流行的 puppet 批量管理工具,复杂、笨重;

4),saltstack批量管理工具,特定:简单、功能强大(配置复杂);







0 0