如何修改vps主机的ssh密码?

如何修改vps主机的ssh密码?,第1张

首先我们登陆
SSH
控制台,然后输入下面指令:

passwd user
然后回车,这里的
USER
是你的
SSH
用户名,比如
passwd root,
然后我们这个时候输入密码
和登录
SSH
一样,
是看不到密码的,
然后我们回车
确认
SSH
密码,然后再回车即可,修改的时候慎重啊,千万不要改错哈!这里可
没有忘记密码功能!嘿嘿!

在使用虚拟机过程中,因为时常要切换到win7下调试,所以比较麻烦。所以最近尝试在win下用SSH Secure Shell Client登陆虚拟机,为了避免反复的su切换到root,所以希望以root用户登陆。 1首先win7安装SSH Secure Shell Client,Ubuntu下也使用apt

本文是笔者查阅网上资料做的总结,关于SSH原理,什么是对称加密和非对称加密,本文不过多介绍。这里介绍一下SHH的工作过程、配制方法,可能出现的问题及解决方法。
说明:本文中涉及的例子,SSH客户端为:本地主机A,SSH服务器为:服务器B

SSH协议采用C-S(客户端-服务器端)架构进行双方的身份验证以及数据的加密。
服务器端组件监听指定的端口,负责安全连接的建立、对连接方的身份认证、以及为通过身份认证的用户建立正确的环境。
客户端负责发起最初的TCP握手、安全连接的建立、验证服务器的身份与之前记录中的一致、并将自己的验证信息提供给服务器。
一个SSH会话的建立过程分为两个阶段。第一阶段,双方沟通并同意建立一个加密连接通道以供后续信息传输用。第二阶段,对请求接入的用户进行身份验证以确定服务器端是否要给该用户开放访问权限。

当客户端发起TCP连接时,服务器端返回信息说明自己支持的协议版本,如果客户端上支持的协议与之匹配,则连接继续。服务器会提供自己的公共主机密钥(public host key)以让客户端确认自己访问的是正确的机器。

然后,双方采用一种Diffie-Hellman算法共同为该会话建立密钥。每一方的一部分私有数据,加上来自对方的一部分公共数据,通过这种算法计算,能够得出完全相同的密钥用于本次会话。

整个会话的通讯内容都使用该密钥进行加密。这个阶段使用的公钥/私钥对与用户验证身份用的SSH密钥是完全无关的。

经典Diffie-Hellman算法的计算步骤如下:

这个共享密钥的加密方式被称为二进制数据包协议(binary packet protocol)。该过程能够让双方平等的参与密钥生成的过程,而不是由单方掌握。这种共享密钥生成的过程是安全的,双方没有交换过任何未经加密的信息。

生成的密钥是对称式密钥,一方用于加密信息的密钥等同于另一方用于解密信息的密钥,而任何第三方由于不持有该密钥,是无法解密双方传递的内容的。

会话加密通道建立后,SSH开始进入用户认证阶段。

下一步,服务器验证用户身份以决定是否准许其访问。验证有不同的方式,选择的验证方式取决于服务器的支持。

最简单的验证是密码验证:服务器要求客户端输入密码,客户端输入的密码经过上述的通道加密传输给服务器。

虽然密码是加密过的,然而该方法仍然不被推荐,因为用户经常为了省事而使用过于简单的密码,而这类密码很容易就能够被自动化脚本破解。

最流行的验证方式是SSH密钥对,这也是当前最推荐的方式。SSH密钥对是非对称密钥,私钥和公钥分别用于不同的功能。

公钥用于加密,而私钥用于解密。公钥可以随意上传、共享,因为公钥的流通并不会危及到私钥的保密性。

SSH密钥对的验证过程起始于上一部分加密通道建立之后,其具体执行步骤如下:

简单来说,服务器端用公钥加密信息,客户端用私钥解密信息以证明自己持有私钥。该过程同时使用了对称加密和非对称加密,两种方式各有自己的功用。

命令如下:

用户名:为要登录的服务器B中已存在的用户账户名
IP地址:为服务器B的IP地址
-p 端口号:用来指定端口号,默认为22

第一次登录时,会提示如下提示:

大概意思是说,你正在访问的主机不能验证它的真实性,它的RSA key(当前访问主机的公钥)指纹是怎样的,你确定要继续连接吗?
输入yes继续,会提示,已永久把当前访问主机的RSA key添加到了已知主机文件(用户目录下,ssh 文件夹中的knwon_hosts文件)中。之后再次 SSH 登录就不再有该提示了。
接着,输入登录账户的密码即可。

SSH 密码登录,需要服务器开启密码验证权限,编辑服务器SSH配置命令如下:

在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,将前面的#号去掉,保存退出。

公钥登录,即免密码登录。避免的每次登录都要输入的麻烦,也防止了中间人攻击。是SSH远程登录最常用的登录方式。

提示输入密钥对名称,直接回车,使用默认名称即可;
提示输入密码(使用私钥时,要输入密码),直接回车,不使用密码即可。

首先,登录服务器B,在进行下面的 *** 作。

找到 #PubkeyAuthentication yes,删除 #号,保存退出。

重启 ssh 服务

也可指定验证私钥:

本地主机A,生成密钥对后:

sudo vim /etc/selinux/config

每一项服务都对应相应的端口,比如众如周知的>一、常规方法:
应该是sshd的设置不允许root用户用密码远程登录
1、修改 vim /etc/ssh/sshd_config
找到# Authentication:
LoginGraceTime 120
PermitRootLogin without passwd
StrictModes yes
改成
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
2、重启ssh
systemctl restart sshd
二、暴力一点,重启服务器试试
三、如果尝试过N种方法还是不行则进行如下 *** 作
1、修改 vim /etc/sshd/sshd_config
找到
UsePAM yes
改为
UsePAM no
2、重启ssh
systemctl restart sshd

package eduibmaiscgcxxsaftypassword;
 
import comopensymphonyxwork2ActionContext;
import comopensymphonyxwork2ActionSupport;
import eduibmaiscgcxxentityUser;
import eduibmaiscgcxxexceptionBusinessException;
import eduibmaiscgcxxsaftypasswordservicePasswordService;
 
public class PasswordAction extends ActionSupport{
     
    private User user;
     
    private PasswordService passwordservice;
     
    private String userNewPassword;
     
    private String userOldPassword;
     
    private String equelsPassword;
 
    public User getUser() {
        return user;
    }
 
    public void setUser(User user) {
        thisuser = user;
    }
 
    public PasswordService getPasswordservice() {
        return passwordservice;
    }
 
    public void setPasswordservice(PasswordService passwordservice) {
        thispasswordservice = passwordservice;
    }
 
    public String getUserNewPassword() {
        return userNewPassword;
    }
 
    public void setUserNewPassword(String userNewPassword) {
        thisuserNewPassword = userNewPassword;
    }
 
    public String getUserOldPassword() {
        return userOldPassword;
    }
 
    public void setUserOldPassword(String userOldPassword) {
        thisuserOldPassword = userOldPassword;
    }
 
    public String getEquelsPassword() {
        return equelsPassword;
    }
 
    public void setEquelsPassword(String equelsPassword) {
        thisequelsPassword = equelsPassword;
    }
    public String editPassword(){
        String userId = ((User)ActionContextgetContext()getSession()get("loginUser"))getUserId();
        //从session中得到userId
        try {
            passwordserviceupdate(Userclass, userId, userOldPassword, userNewPassword, equelsPassword);
            return SUCCESS;
        } catch (BusinessException e) {
            // TODO Auto-generated catch block
            eprintStackTrace();
            return INPUT;
        }
         
    }
     
 
 
}

在Windows环境下常使用putty登陆到远程Linux主机,其间使用了ppk文件。Mac OSX下没有putty,但可以直接使用ssh命令,这个命令需要在terminal下来执行。在使用ssh前,需要把ppk文件的格式转换一下,方法是:仍然在Windows,打开puttygenexe,读入ppk文件,然后点击Conversions菜单,选择Openssh,假定文件存为myppkssh。此时,把此文件传输到Mac OSX后就可以在Mac OSX下执行ssh来远程登陆了。我使用的命令格式为:
ssh -2 user@ip -i myppkssh
以上,user和ip需根据你的实际情况进行替换。myppkssh文件名也可以自己指定。另外,需要设置myppkssh的访问许可:chmod 700 myppkssh。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/12869826.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-28
下一篇2025-08-28

发表评论

登录后才能评论

评论列表(0条)

    保存