Windows上不支持sshpass -p不用单独输入的密码登录模式,愿意的人可以尝试安装cygwin然后从这里边安装sshpass,最后把sshpass.exe拷贝到cygwin/bin下边,就可以在命令行里使用sshpass,但是亲测它sshpass -v的时候是好的,用的时候还是要输密码。
1 Linux的ssh安装设置
这里用的是Centos7的虚拟机
设置为桥接模式
yum list installed | grep openssh-server
如果显示
rm -f /var/run/yum.pid
如果没任何输出显示表示没有安装openssh-server,执行实线内的语句
————————————————
yum install openssh-server
————————————————
yum -y install sshpass
vim /etc/ssh/ssh_config
将“StrictHostKeyChecking no”前边的“#”号去掉,后边的改为no
StrictHostKeyChecking no
vim /etc/ssh/sshd_config
以下内容,去掉前边的#并做相应修改
Port 22
ListenAddress 0.0.0.0
ListenAddress::
PermitRootLogin yes
PasswordAuthentication yes
GSSAPIAuthentication no
UseDNS no
ClientAliveInterval 60
ClientAliveCountMax 3
保存后退出
service sshd restart
开启 sshd 服务
sudo service sshd start
检查 sshd 服务是否已经开启,输入ps -e | grep sshd
或者输入netstat -an | grep 22 检查 22 号端口是否开启监听
此时可以进行Linux和Linux之间的ssh通信和sshpass通信
2 Windows上OpenSSH安装
设置
可选功能
添加功能
安装上这俩
如果到此为止了,可能下次再使用ssh的时候发现无法连接到别的设备了,还要再调ssh的启动设置。
win+R 输入services.msc,后点击确定
找到和ssh相关的这两条
右键点击,属性,启动类型改为自动启动,状态改为启动。
之后再试ssh就好了。
3 Windows使用ssh免密登录Linux
Windows控制面板,管理员权限
进入C:\Users\“用户名”\.ssh
ssh-keygen
设置名称设置密码重复密码一律按回车用默认设置,
随后该路径下会生成两个文件 id_rsa id_rsa.pub
scp id_rsa.pub user@host:~/.ssh
进入Linux
cd .ssh
cat id_rsa.pub >> authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
vim /etc/ssh/sshd_config
systemctl restart sshd;
service sshd restart;
4 Windows与Windows之间使用ssh密钥免密传输
使用同样的方法生成密钥
两台Windows设备都进行一样的操作:
进入C:\Users\“用户名”\.ssh
ssh-keygen -t rsa
(这个-t rsa不写也行,会自动补充)
把生成的公钥id_rsa.pub粘到另一台设备上,并重命名为authorized_keys
说的稍微拗口些,现在.ssh下应该同时有自己的私钥id_rsa,自己的公钥id_rsa.pub,对方的公钥authorized_keys。
重命名也可以使用指令cat id_rsa.pub >> authorized_keys
找到文件C:\ProgramData\ssh\sshd_config
因为这个文件修改需要管理员权限,所以最好把它拷出来修改,改好后再拷贝回去。
确保以下3条没有被注释,后边的yes或no要写对
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
(如果你还维持着PasswordAuthentication的注释状态,就可以同时使用密钥登录和密码登录,但是这样也会降低安全性)
确保以下2条有注释掉
#Match Group administrators
#AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
然后通过services.msc那里重启ssh。