1 SSH Secure Shell Protocol。 远程登录,sftp服务。
2 ssh linux下的客户端就是ssh,可以实现远程拷贝 scp。
3 linux下的ssh 服务 /etc/init.d/sshd start
ps -ef | grep sshd netstat -lntup | grep sshd
4 检测是否可连上某个服务器的服务
a: 检测物理网络是否通 ping ip
b: telnet 端口 ,看看服务是不是开了
5 ssh 两个版本,2稳定,1有漏洞。
6 linux ssh客户端功能包括ssh远程连接和scp远程拷贝; ssh服务端包括远程登录服务和sftp服务。
7 rpm -qa openssh openssl
远程连接是 openssh ,远程加密是openssl
8 ssh 版本不同是连接不上的 ,ssh 是daemon进程
9 ssh 配置文件
/etc/ssh/ssh_config 客户端
/etc/ssh/sshd_config 服务端
10 ssh 2版本支持两种秘钥 RSA 和 DSA , ssh1 只支持 RSA
11 ssh 认证类型
a:基于口令的验证, 账号密码形式
b:基于秘钥的验证,服务端产生秘钥对,公钥放到服务端,私钥放到客户端。
12 ssh 企业级安装设置
a: 修改端口,限制某一个ip登录,只允许内网IP登录,不允许root登录
13 sshd_conf 编辑(ssh 服务端优化)
Port 端口修改
ListenAddress 接听地址修改 IP:Port
GSSAPIAuthentication no 将yes注释掉,连接慢就是这个影响的
UseDNS no 将use dns改成no,连接慢也是这个影响的
PermitRootLogin no禁止root用户登录
PermitEmptyPasswords no 禁止空密码登录
/etc/init.d/sshd reload 平滑重启
14 远程连接 ssh -p{Port} {username}@IP
15 visudo 给用户提权
添加 username All=(All) NOPASSWORD:All
16 如何防止ssh登录入侵
用秘钥登录,上面sshd_conf 配置(牤牛阵法),防火墙关闭ssh,制定源IP限制(局域网,信任公网),开启ssh只监听本地内网IP,尽量不给服务器外网IP
17 ssh 命令
连接 : ssh -p{端口号} {用户名}@ip {command}
~/.ssh/know_hosts 客户端存放服务端公钥的文件
scp 远程拷贝
scp -P{端口号} -r(目录拷贝) -p(保持属性) /etc/hosts {username}@ip:/tmp
例子: 推数据 : scp -P5213 -rp /etc sshuser@ip:/tmp
拉数据: scp -P5213 -rp sshuser@ip:/tmp /etc
-l 属性 限速,防止在拷贝的时候占满带宽。
-t 属性 打开终端。
sftp 上传
sftp -oPort={端口号} {远程用户名}@ip
上传:
连上后, put {文件} 将本地文件上传到服务端
例子 : put /etc/hosts 上传到家目录
put /etc/hosts /tmp 上传到/tmp 目录下
下载:
get /etc/hosts /home
sftp 不支持目录,需要打包。(限定sftp登录后只限定指定目录下,不允许切换到其他目录)
18 ssh 批量管理
a:创建用户及密码(在所有机器上创建用户)
useradd test
echo 123456 | passwd --stdin test
b: 生成秘钥
su - test
ssh-keygen -t rsa
非交互式创建秘钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa > /dev/null 2>&1
c: 将公钥发到管理机上
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p {port} test@ip"
(最终的在管理机上的名字 .ssh/authorized_keys,文件名是在 /etc/ssh/sshd_conf 中配置的)
19: sudo 实现没有权限用户拷贝
suid 实现没有权限用户拷贝(工作中不要用)
sudo 提权方法
visudo
底下添加
test ALL=(ALL) NOPASSWORD: /usr/bin/rsync
用户名 所有角色,可以 ALL= 就是root 不需要password可以执行的命令
echo "test ALL=(ALL) NOPASSWORD: /usr/bin/rsync" >>/etc/sudoers
visudo -c 检查语法
使用远程sudo,需要加参数 -t /etc/sudoers 里查-t
20 非交互式 expect (sshpass,pssh)
rpm -qa expect
非交互式生成密钥并批量管理
!#/usr/bin/expcet
spawn ssh-copy-id -i ~/.ssh/id_rsa.pub "-p {port} test@ip"
expect {
"yes/no" {send "yes\r" :exp_continue}
"password {send "$password\r"}
}