搭建ssh隧道后本机ssh localhost -p 指定端口后需要密码
-p 21312 221226xxxx的ssh端口是21312, 默认是22
-C 使用压缩
-N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-g 允许远程主机连接到建立的转发的端口
-L 端口转发的参数
要想在windows下远程连接linux的ssh客户端,就需要借助像xshell这样的终端模拟器软件,具体步骤如下:
步骤一
打开xshell软件。双击桌面上的xshell软件快捷图标,就可以打开软件,打开的软件主界面如下图所示。
图1:xshell软件主界面
步骤二
执行新建命令。打开xshell软件后找到左上角第一个“文件”菜单并单击,弹出来一个下拉框,点击选择“新建”命令(或者直接按下快捷键“alt+n”)。
步骤三
点击“新建”之后就会出现下面这样一个界面,“名称”根据自己的需求填写,“协议”就是默认的ssh,“主机”是这一步最关键的,一定要填写正确,否则无法登录,端口也是默认的22,其他不用填,填写完成之后先不要点确定,看下一步。
图3:新建服务器会话
在使用xshell中的过程中,如果发现电脑的小键盘不能用了,可参考教程:xshell中数字小键盘不能使用怎么办?
步骤四
找到连接选项栏中的“用户身份验证”点击,点击之后会让你填写用户名和密码,其中“方法”默认“password”,“用户名”填写你的ftp用户名,“密码”填写你的ftp密码,填写完成点击确定。
图4:用户身份验证
步骤五
登录刚才保存的账号,单击左上角的“文件”菜单,在其下拉选项选择“打开”命令,弹出会话对话框,左下角有一个选项“启动时显示此对话框”,这个选项的意思是:每次打开xshell都直接跳出这个对话框,根据需求勾选,然后找到你想登录的服务器,点击“连接”即可。
图5:连接服务器
连接之后出现如下界面中的[root@]样式的,就证明连接成功了。
图6:服务器连接成功
根据以上步骤,就可以连接linux。在使用的过程中一定要保证数据的安全,离开电脑或者不需要使用的时候,将其退出,更安全的方法是如果你服务器的“主机”“用户名”“密码”这三项记得很清楚的话,尽量不要保存账号密码,每次打开重新输入来进行连接。
SSH(secure shell)用于远程和服务器交互
Ubuntu Server默认安装了OpenSSH Server,可通过端口22连接
SSH客户端可以用用户名密码的方式连接服务器,也可以用密钥对的方式连接服务器。
可以使用SSH客户端工具PuTTY,windows10自带的SSH工具,或者VMWare的SSH工具连接服务器
1在命令行用 用户名和密码连接
ssh username@serveraddress
2SSH客户端还可以用 密码对 (公钥和私钥)连接
这里使用Win10自带的工具
生成密钥对
运行命令:ssh-keygen
添加公钥
打开生成的公钥文件id_rsapub,复制全部内容
使用SSH密码登录的方式登录Ubuntu服务器,在当前用户目录创建文件夹ssh,进入ssh文件夹并创建文件authorized_keys,粘贴从公钥复制的内容并保存文件
修改SSH配置
修改Ubuntu Server的文件:
/etc/ssh/sshd_config
将PubkeyAuthentication yes前面的注释去掉
运行命令重启sshd服务
sudo systemctl restart sshd
退出SSH连接,重新用私钥登录登录
ssh <username>@<serveraddress> -i <私钥路径>
SSH(Secure Shell)协议为远程登录或其它网络服务(如:sftp、scp)提供安全保障的一种协议。它设计之初的主要目的是替代telnet远程登录协议,由于telnet协议以明文的方式在互联网上传递数据和服务器账户口令,别有用心的人很容易就可以截获得到这些数据和口令。以下是SSH详细的登录过程:
a、版本号协商阶段
服务器端启动ssh服务,并打开22号端口(也可以配置为其它端口),等待客户端链接。客户端向服务器端发起TCP连接。连接建立后,服务器端和客户端开始商议欲使用的协议版本号。如果协商成功,进入密钥和算法协商阶段,否则,断开TCP连接。
b、密钥和算法协商阶段
服务器端和客户端分别向对方发送算法协商报文,其中包括了自己支持的非对称加密算法列表、加密算法列表、消息验证码算法列表、压缩算法列表等。服务器端和客户端根据双方支持的算法得出最终使用的算法(如非对称加密算法是采用RSA,还是DSA)。协商完成后,服务器端将自己的公钥发送给客户端,客户端根据公钥指纹决定是否信任此主机。选择信任此主机后,客户端使用服务器端的公钥将自己生成的会话密钥加密,发送给服务器端。以后的会话内容和口令都通过此会话密钥加密发送。通常,每过一个小时,服务器端和客户端会重新商定会话密钥,以防止会话密钥被暴力破解。
c、认证阶段
基于口令的认证:
客户端采用在算法协商阶段产生的会话密钥加密帐号、认证方法、口令,并将其传送给服务器端。服务器端收到后将其解密后,基于本地账户密码对其判断是否正确。如果正确,成功建立登录连接,否则,向客户端返回认证失败报文,其中包含了可再次认证的方法列表。当登录请求次数达到可允许的尝试上限次数后,服务器端断开本次TCP连接,并限制此帐号连接请求。
基于密钥的认证:
客户端使用ssh-keygen工具在本地家目录的ssh/目录下生成一对密钥(如:公钥id_rsapub、私钥id_rsa)。并将公钥追加保存到将要登录的服务器上的那个帐号家目录的ssh/authorized_keys文件中。客户端使用算法协商阶段生成的会话密钥加密帐号、认证方法、公钥,并将其传送给服务器端。服务器端收到后将解密后的公钥与本地该帐号家目录下的authorized_keys中的公钥进行对比。如果内容不相同,认证失败,否则服务器端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随记字符串用会话密钥加密发送给服务器端。如果发回的字符串与服务器端起先生成的一样,则认证通过,否则,认证失败。
openssh便是SSH的一个开源实现。本文后续部分将简要介绍如何用openssh基于口令和密钥的远程登录。
示例:
# ssh root@17229166218
如果是第一次登录远端主机,系统会出现以下提示:
因为协议本身无法确认远端服务器的真实性,用户自行根据提供的经SHA256算法提取的公钥指纹判断其真实性。如果确认为真,则输入帐号密码以登录服务器端。
a、首先在客户端生成一对密钥
示例:
b、将客户端公钥保存到服务器端
示例:
另外,可以不使用ssh-copy-id命令,改用以下命令,可以更好的理解公钥的保存过程:
c、登录验证
如果仍然无法无口令登录,请检查sshd配置文件/etc/ssh/sshd_config,并将以下几行前面的注释符号取消。
修改你的ssh配置文件,将其中的PermitRootLogin的参数设置为yes
配置文件路径如:/etc/ssh/sshd_config
重启ssh服务,命令如下:
/etc/initd/sshd restart
或
/etc/initd/ssh restart
然后修改root的密码,将密码修改为123456
通过ssh远程登录linux系统步骤如下:
1、启动软件,点击快速连接,我们要选择连接的协议。
2、协议选择要然后填写服务器的IP地址和用户名,然后点击连接。
3、在通过验证后需要填写连接服务器的密码,下面的保存密码一般都会进行勾选,方便下次登录。
4、连接成功后就可以正常登录到服务器系统了。
最近在看spark的书籍,书中第一步搭建单机spark的时候,有一个操作是设置ssh无密码的登陆了。万万没想到,在这一步就卡住了。已经成功配置了免密登陆,但是ssh localhost还是需要输入密码。在阿里云香港服务器挂掉之后,百度了两天才找到解决方法。特此记录。
查看日志是分析问题中很重要的一环,因为ssh中会出现各种不同的问题,每种问题的解决方法不一样。
ssh -vvv localhost 报的错误信息
日志显示ssh跳过了dsa的认证方式,最后只能通过密码认证的方式。
通过查询资料发现,ssh 70之后就已经默认关闭了dsa认证方式。
于是修改ssh的配置文件ssh_config,在验证方式中加入dsa
按照教程修改完配置文件后,ssh localhost任然需要输入密码,查看日志如下。·
可以看出修改过后,ssh时已经提供了DSA秘钥,但是好像校验没有通过,所以最后还是进入了输入密码验证的环节。
通过查阅资料和自己推理,问题可能出在服务端校验不通过,因为服务器端也不支持dsa这种认证方式,那就试着修改一下服务器端的配置文件。
ssh_config 和 sshd_config 分别是ssh客户端和服务器端的配置文件,ssh localhost就是一个本地客户端向本地服务器请求的过程。
修改sshd文件后,ssh localhost还是需要密码。就在我差点自闭的时候,看到有帖子说要重启一下ssh服务器。
重启完成后,ssh localhost免密登陆成功。长舒一口气。
后来经过测试,修改ssh配置文件不用重启服务,但是修改sshd配置文件,是要重启才能生效的。
据说是因为dsa是不加密的,后面都改用rsa了,遇上同样问题的小伙伴可以自己去查一下。
``
0条评论