linux下的SSH服务

SSH是 Secure Shell Protocol的简写,主要用于远程登录!

以前使用telnet登录(23端口)他不是加密的,而ssh(22端口)是加密的

ssh有两个重要功能

1,远程连接登录服务

2,SFTP功能(安全的FTP),可以使用scp传输文件,也是通过ssh协议工作

 

ssh结构

rpm -qa openssl openssh

openssl-1.0.1e-42.el7.x86_64       加密
openssh-6.6.1p1-11.el7.x86_64   远程连接

 

SSH配置文件

ssh配置文件(有用的)

vim  /etc/ssh/sshd_config

  • Protocol  2  #协议
  • Port   22  #端口
  • ListenAddress  10.0.0.0/24:22  #监听的IP
  • PermitEmptyPasswords  #是否允许密码为空的用户登录,默认no
  • PermitRootLogin    #是否允许root 登录,默认yes(禁止SSH登录)
  • UseDNS   #禁止反向解析
  • GSSAPIAuthentication yes   #SSH远程登录慢,关闭改为no

需要重启ssh服务才能生效

/etc/init.d/sshd restart

 

 

远程连接命令

 

 

ssh -p22 daxian@10.0.0.123 /sbin/ifconfig eth0

 

报错信息:

ssh:connect to host 10.0.0.123 port 22:Connection refused

解决办法:(连接被拒绝)

  1. 防火墙没关(/etc/init.d/iptables stop)
  2. 端口没开(更改端口 或者 服务没启)

 

 

 

基于密钥安全认证

管理服务器  相当于钥匙(私钥), 每台客户端服务器放锁(公钥)

 

 

第一步创建用户跟密码(根据上图,所有服务器都要创建用户)

useradd daxian007

echo 12345|passwd --stdin daxian007

第二步 生成密钥

su - daxian007    #切换用户

ssh-keygen
-t dsa #创建密钥对

cd .ssh
ls
id_dsa 私钥 id_dsa.pub 公钥

一键生成密钥对(脚本中经常用到)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

 

第三部 发送公钥(发送到所有机器上)

ssh-copy-id -i .ssh/id_dsa.pub daxian007@192.168.70.125

如果端口更改了

ssh-copy-id -i .ssh/id_dsa.pub -p 22 daxian007@192.168.70.125

 

第四部 测试一下(查看IP地址)

 ssh -p22 daxian007@192.168.70.125 /sbin/ifconfig eth0

ssh -p22 daxian007@192.168.70.126 /sbin/ifconfig eth0 

命令最好使用全路径

 

 

第五步 测试 分发hosts

创建一些数据给hosts

su -

cat >>/etc/hosts<<EOF
> 192.168.70.125 web01
> 192.168.70.126 web02
> 192.168.70.127 web03
> 192.168.70.128 web04
> 192.168.70.129 web05
> EOF

su - daxian007

cp /etc/hosts ./


发送hosts给所有服务器(如果拷贝到/etc/daxian007是没有权限的)

sudo授权(所有机器)

echo "daxian007 ALL=(ALL) NOPASSWD: /usr/bin/rsync " >>/etc/sudoers
#也可以 放置cp命令 visudo
-c

开始分发

cp /etc/hosts ./
scp hosts 192.168.70.125:~ #拷贝hosts到125家目录下 hosts 100% 263 0.3KB/s 00:00
ssh -t daxian007@192.168.70.125 sudo rsync ~/hosts /etc/hosts
#使用ssh -t 执行sudo rsync 复制到/etc/下

或者 rsync加密的,增量的
rsync -avz ./hosts  -e 'ssh -p 22' daxian007@192.168.70.125:~
ssh -t daxian007@192.168.70.125 sudo rsync ~/hosts /etc/hosts

 

批量管理脚本实现

#!/bin/sh
. /etc/init.d/functions
for n in 125 126 127 128 129
do
  scp -P22 ~/hosts daxian007@192.168.70.${n}:~
  ssh -p22 -t daxian007@192.168.70.${n} sudo rsync ~/hosts /etc/hosts
done

 

posted @ 2017-12-28 15:14  大仙儿没溜儿  阅读(235)  评论(1编辑  收藏  举报