Windows下通过SSH无密码连接Linux服务器

一、配置环境

1、本机系统:Windows 10 Pro(64位)
2、服务器:腾讯云CentOS 7.2(64位)
3、SSH连接软件:Xshell 5

二、配置SSH无密码登录步骤

1、在个人PC机产生公钥和私钥
2、将产生的公钥上传到服务器,将公钥导入到认证文件,更改权限
3、通过Xshell 5 导入私钥,进行SSH连接

三、前期准备

1、新创建的Linux服务器有用户名和密码,可以通过用户名和密码连接,打开Xshell 5点击新建按钮

2、新建一个连接

3、输入服务器的用户名和密码,先通过用户名密码的方式连接服务器,配置好SSH连接方式后就禁止通过密码登录

4、点击确定,并选择刚配置的连接信息进行连接

5、在进行SSH配置前,需要先在Linux服务器安装一个上传下载工具,安装完成后就可以通过Xshell上传文件到服务器,或者从服务器下载文件到本机机器,通过Xshell连接上服务器后,可以通过命令:rz-来进行文件上传,sz-来进行文件下载

yum install -y lrzsz

6、查看服务器是否安装了SSH服务,要进行SSH连接服务器,则服务器上必须安装SSH服务,并启动该服务

rpm -qa | grep ssh   #查看是否安装了SSH服务

若没有安装,则输入

yum install openssh-server #安装openssh服务

安装完后要启动服务

service sshd restart        #重启SSH服务
service sshd start          #启动服务
service sshd stop           #停止服务
netstat -antp | grep sshd   #查看是否启动22端口
chkconfig sshd on           #允许SSH开机启动
chkconfig sshd off          #禁止SSH开机启动

四、配置SSH连接

1、在服务器创建一个用户用于SSH连接,我们不用root用户进行SSH

①创建一个用户组admin

groupadd admin

②添加一个新的用户

useradd -d /home/用户名 -s /bin/bash -m 用户名   #创建用户,用户名自取,参数d表示指定用户的主目录,参数s指定用户的shell,参数m表示如果该目录不存在,则创建该目录
passwd 用户名    #给用户设置密码,然后输入两次密码就好

③将adminSSH添加到用户组admin中

usermod -a -G admin adminSSH

④为adminSSH用户设定sudo权限

visudo

visudo命令会打开文件/etc/sudoers,找到如下一行

root ALL=(ALL) ALL

添加一行

adminSSH(用户) ALL=(ALL) NOPASSWD: ALL

上面的NOPASSWD表示,切换sudo的时候,不需要输入密码,我喜欢这样比较省事。如果出于安全考虑,也可以强制要求输入密码。
<strong>用户创建好后切换到adminSSH用户连接</strong>
2、本地生成公钥和私钥,这边是使用git 中 shell产生的,其他类Unix系统可以直接在终端生成

ssh-keygen -t rsa #该命令产生的密钥是通过rsa算法加密生成的
ssh-keygen -t dsa #该命令产生的密钥是通过dsa算法加密生成的

生成密钥过程中可以一路回车,不给定密钥文件名字和密码,使用默认的密钥文件名称和空密码

3、将刚刚生成的公钥(带.pub结尾的文件)ssh_rsa.pub上传到Linux服务器刚刚新建的用户目录下(即/home/adminSSH目录下),此时我们就可以用rz命令了

4、将上传的公钥文件的内容追加到authorized_keys文件,使用如下命令:

cat ssh_rsa.pub > ~/.ssh/authorized_keys  #如果~/.ssh目录不存在,则自己新建

</strong>
5、修改SSH配置文件/etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

在配置文件中找到 #Port 22,修改默认的端口,范围可以从1025到65536,此处改为Port 6983

修改如下设置并确保去除了#号

Protocol 2                     #选择的 SSH 协议版本,可以是 1 也可以是 2
PermitRootLogin no                #禁止root用户登录
PubkeyAuthentication yes       #是否允许 Public Key ?当然允许啦!只有 version 2
PasswordAuthentication no    #禁止使用密码登录,密码验证是否需要看个人需求
PermitEmptyPasswords no    #否允许以空的密码登入:若上面那一项如果设定为 yes 的话,这一项就最好设定为 no

最后,在配置文件的末尾添加一行用来指定可以登录的用户

AllowUsers adminSSH

保存退出后,修改authorized_keys和.ssh的文件权限

sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/authorized_keys

重启SSH服务

sudo service sshd restart

6、使用Xshell连接,此时如果在用用户名和密码连接服务器已发现连接不上了,因为刚在设置了禁止用密码登录
①打开Xshell 5—工具—用户密钥管理者—导入—将生成的私钥导入—关闭
②打开刚刚的用用户名和密码登录的连接属性,或者新建一个连接,修改端口号

确定—连接—成功通过SSH免密码连接服务器

五、登录失败问题解决######

出现这一情况主要考虑两个方面,一个是SELInux,另一个是防火墙
<strong>SELinux问题解决</strong>
①查看登录日志

sudo tail -n 20 /var/log/secure

如果发现日志中有

fatal: Cannot bind any address.
error: Bind to port 6983 on 0.0.0.0 failed: Permission denied.
error: Bind to port 6983 on :: failed: Permission denied.

表示数据端口绑定失败,这是因为Centos7中开启了SELinux
②关闭SELinux
修改SELinux配置文件

sudo vi /etc/selinux/config

找到SELINUX=enforcing,修改为

# SELINUX=enforcing SELINUX=disabled

重启服务器

sudo reboot

<strong>防火墙问题排查</strong>
如果再次连接发现还是不行
①查看日志

sudo tail -n 20 /var/log/secure

发现没有失败的日志输出
②查看防火墙是否开启

systemctl status firewalld

如果开启了,则原因就是刚刚设置的ssh端口6983并没有添加到防火墙中
③添加端口到防火墙

sudo firewall-cmd --zone=public --permanent --add-port=6983/tcp

④重启防火墙

sudo systemctl restart firewalld

查看端口是否添加成功,执行

sudo firewall-cmd --list-all

如果出现以下输出,则证明添加成功

public (default, active)
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports: 6983/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

原文地址:https://www.cnblogs.com/littlehb/p/10941706.html

时间: 2024-10-10 00:57:42

Windows下通过SSH无密码连接Linux服务器的相关文章

cwRsyncServer从windows下数据实时同步到linux服务器上的实现过程

由于公司有两台windows服务器,开发在操作时一般也都是在这两台服务器上上传一些数据或修改一些东西,而Linux上的服务器也要跟windows上的数据要保持一致而又不需要人为的实现这个过程,基于此过程,昨天花了点时间,完成了基本的测试实现过程,今天就把这过程给记录下来,方便以后查看,以希望可以帮到还在困惑的朋友们. 第一步:在windows上的安装cwRsyncServer4.1.0以及配置过程: 在windows上下载安装包cwRsyncServer4.rar,这个不多解析,大家都懂,要是在

ssh远程连接linux服务器并执行命令

详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登录密码 pkey:私钥方式身份验证 key_filename:用于私钥身份验证的文件名 timeout:连接超时设置 allow_agent:这是布尔型,设置False的时候禁止使用ssh代理 look_for_keys:也是布尔型,禁止在.ssh下面找私钥文件 compress:设置压缩 exec

在windows上通过ssh远程链接linux服务器[转]

本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliudong/p/4094519.html] 今天想要新装了一台linux服务器,想要将其搬到机房,同时也要实现通过别的电脑对该服务器的访问,通过windows上装的ssh访问linux服务器,发现链接不上,通过百度发现linux服务器上要装ssh-server,所以百度了安装教程(http://jin

转 windows下安装pycharm并连接Linux的python环境

https://www.cnblogs.com/junxun/p/8287998.html 1. 下载安装Pycharm专业版 具体方法略.Pycharm5激活方法参考http://www.cnblogs.com/snsdzjlz320/p/7110186.html 2. 添加配置连接远程服务器 2.1  打开 PyCharm,依次点开 File  → Settings → Project scripts → Project Interpreter  选择“Add Remote” 2.2  点击

windows下使用putty+psftp连接linux虚拟机进行文件传输

嘛,首先需要用putty连接linux.除了重要的ssh协议的配置之外,还可能要在linux下输入命令: service iptables stop(用于关闭防火墙) service sshd start(开启ssh协议) ifconfig(查看ip地址) 可以通过passwd  [用户名]的命令修改登录密码(嘛,root密码设成123456被access denied很多次,改成zxcvbnm123就登上了<黑人问号?>) 然后要打开psftp(http://www.chiark.green

[linux RedHat]windows下使用putty远程连接linux 下载JDK和tomcat

本文地址:http://blog.csdn.net/sushengmiyan/article/details/43154543 本文作者:sushengmiyan ------------------------------------------------------------------------------------------------------------------------------------ 工作环境下有个配置好的电脑,想用来做服务器,但是由于受限局域网转公网的

Windows 下远程桌面连接linux服务器(确保服务器为带桌面版)

方法一(通过xmanager中的Xbrowser工具远程桌面): 详细步骤 Cd  /etc/sysconfig/ Vi  displaymanager ,修改 DISPLAYMANAGER_REMOTE_ACCESS=“yes” DISPLAYMANAGER_ROOT_LOGIN_RENOTE=”yes” 执行命令:rcxdm restart 来 重启XDM服务, 在客户机上启动Xbrowser,刷新即可看到你想要连接的服务器,双击即可 或者输入suse linux机器IP地址来连接: 二.方

如何在Windows系统上利用Telnet协议连接Linux服务器

Telnet协议是Internet远程登录服务的标准协议,它为用户提供了在本地计算机上完成远程主机工作的能力.很多终端使用者都习惯在计算机上利用Telnet会话来远程控制服务器.这里小编就分两步为大家演示如何在Windows系统上利用Telnet协议连接Linux服务器. 步骤一:在Windows系统上打开Telnet功能:  步骤二:在Linux系统上启用Telnet服务. 步骤一:Windows终端开启Telnet功能 1/由于在Windows Vista之后的版本默认并没有提供Telnet

mac通过自带的ssh连接Linux服务器并上传解压文件

需求: 1:mac连接linux服务器 2:将mac上的文件上传到linux服务器指定位置 3:解压文件 mac上使用命令,推荐使用 iterm2 .当然,也可以使用mac自带的终端工具. 操作过程: 一: mac连接linux服务器 输入命令连接Linux服务器: ssh [email protected] 其中: username为登录Linux服务器所需的用户名,ip为服务器的地址.默认端口号为22,如果要指定端口号,使用 -p port // 以下两种方式都可以 ssh [email p