一键修改ssh参数(修改端口6666、禁止root登入和空密码、加速ssh连接)
sed -ir '13 iPort 6666\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config
查看sed -n '13,17p' /etc/ssh/sshd_config 修改结果
/etc/init.d/sshd restart
实验环境:机器6台,一台ip192.168.169.10做主分发机器,其余ip192.168.169.11-15做被分发机器
机器全部开启,可以做一个securtCRT交谈会话窗口一键执行添加用户
cat ~/.ssh/known_hosts 访问过的公钥记录
rm -f ~/.ssh/known_hosts
服务器批量创建用户及密码
useradd jiege
echo 123456|passwd --stdin jiege
id jiege
su - jiege
10创建密钥对
su - jiege
ssh-keygen -t dsa 一路回车
ll /home/jiege/.ssh/ 查看生成文件
-rw------- 1 jiege jiege 668 Jun 22 22:38 id_dsa #私钥,权限为600,保留本地,私
钥为钥匙
-rw-r--r-- 1 jiege jiege 599 Jun 22 22:38 id_dsa.pub #公钥,权限为644,分发给其
他主机,公钥为锁
#ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
10分发公钥
默认端口22
ssh-copy-id -i .ssh/id_dsa.pub "jiege@192.168.169.11"
更改过的ssh端口6666
ssh-copy-id -i .ssh/id_dsa.pub "-p 6666 jiege@192.168.169.11"
ssh-copy-id -i .ssh/id_dsa.pub "-p 6666 jiege@192.168.169.12"
ssh-copy-id -i .ssh/id_dsa.pub "-p 6666 jiege@192.168.169.13"
ssh-copy-id -i .ssh/id_dsa.pub "-p 6666 jiege@192.168.169.14"
ssh-copy-id -i .ssh/id_dsa.pub "-p 6666 jiege@192.168.169.15"
.ssh/authorized_keys #出现这个表示推送公钥成功
测试ssh不要密码即成功
企业里实现ssh cp没权限方案
1直接root ssh key
条件:允许root ssh登入
2sudo提权实现拷贝没有权限的用户拷贝
root ALL=(ALL) ALL
jiege ALL=(ALL) NOPASSWD:/bin/cp #在98行后加入这一行内容,给予jiege用户
执行/bin/cp命令的权限,sudo提权
echo "jiege ALL=(ALL) NOPASSWD:/bin/cp" >>/etc/sudoers
visudo -c 检查语法错误
远程sudo方法
ssh -p6666 -t jiege@192.168.169.11 sudo /bin/cp ~/hosts /etc/hosts
visudo
#You have to run "ssh -t hostname sudo <cmd>". #远程执行sudo方法一加-t
Defaults requiretty #远程执行sudo方法二,直接注释掉此行内容
3利用suid实现没有权限的用户拷贝(思维扩展了解一般不采用不安全)
which cp
/bin/cp
chmod 4755 `which cp`
chmod u+s `which cp`
chmod u+s $(which cp)
ssh jiege@192.168.169.12 /bin/cp ~/hosts /etc/
chmod u-s $(which cp) #权限去掉
ssh批量分发脚本(需自定义源文件和目标目录)
vi fenfa_file.sh
#/bin/sh
#piliangfenfajiaoben,2017-06-23 by jiege
if [ $# -ne 2 ]:then
echo "USAGE:/bin/sh $0 ARG1 ARG2"
exit 1
. /etc/init.d/functions
for n in 11 12 13 14 15
do
scp -P6666 -rp ~/$1 jiege@192.168.169.$n:~ >/dev/null 2>$1&&\
ssh -p6666 -t jiege@192.168.169.$n sudo/bin/cp ~/$1 $2 >/dev/null 2>$1
if [ $? -eq 0 ]:then
action "fenfa hosts 192.168.169.$n" /bin/ture
else
action "fenfa hosts 192.168.169.$n" /bin/false
done
ssh批量查看执行命令
vi allview.sh
#/bin/sh
if [ $# -ne 1 ]:then
echo "USAGE:/bin/sh $0 ARG1"
exit 1
fi
for n in 11 12 13 14 15
do
echo ========192.168.169.$n=========
ssh -p6666 jiege@192.168.169.$n "$1"
done
附上ssh应用方案
【远程连接及执行命令】
ssh -p22 root@10.0.0.19
ssh -p22 root@10.0.0.19 /sbin/ifconfig
【远程拷贝:推送及拉取】
推push scp -P22 -r -p /etc root@10.0.0.19:/tmp -p拷贝前后保持文件或目录的属性
拉pull scp -P22 -r -p root@10.0.0.19:/tmp/ /etc -r递归
【安全的FTP功能】
sftp -oPort=22 root@10.0.0.19
【无密码验证方案】
例如利用sshkey批量分发文件,执行部署操作。