PuTTY+Xming实现X11的ssh转发

本文介绍了如何通过PuTTY+Xming在远程虚拟服务器上实现SSH高级安全登录,包括开启密钥认证和禁用密码登录。同时,详细讲解了如何解决SSH登录过程中遇到的access denied问题,并总结了手动和自动修改本地及远程用户密码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

远程虚拟服务器

 

解决方案:

 

1 vi服务端的/etc/ssh/sshd_config

PasswordAuthentication设成yes

#PermitRootLogin no改为PermitRootLogin yes

 

重启服务器端的sshd服务

/etc/init.d/sshd restart

 

重启客服端的SecureCRT程序

putty access denied_

怎样利用putty登陆SSH主机方法_

4本文章总结了如何手动、自动修改本地用户密码及远程机器的用户密码。对做自动化测试提供了自动修改用户密码的原理及方法。

修改本地用户密码:
1、交互配置本地用户:
以root用户:

passwd 
Changing password for user dewang.
New UNIX password: 
BAD PASSWORD: it is too short
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
以非root用户修改自己的密码(注后面不能跟用户名,只有root用户才允许):
passwd
Changing password for user dewang.
Changing password for dewang
(current) UNIX password: 
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

2、非交互配置本地用户:
echo | passwd --stdin


echo : | chpasswd


将:对先写到一文件passwd.tmp中,然后执行
chpasswd < passwd.tmp

3、自动脚本处理:
根据passwd命令修改用户密码,格式为:xxx.sh 
#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}
if { $argc != 2 } { 
    puts "Usage: $argv0 "
    exit 1
}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof

说明:如果要通过shell直接调用expect相关命令,则开头中必须是如下格式,然后后面即可按照expect、TCL格式书写了。
#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}

根据echo | passwd --stdin 及 echo : | chpasswd来修改用户密码:
#!/bin/sh

if [ $# -ne 2 ] ; then
    echo "Usage: `basename $0` "
    exit 1
fi

#echo "$2" | passwd --stdin "$1"
echo "$1:$2" | chpasswd
if [ $? -eq 0 ] ; then
    echo "change password for $1 success"
else
    echo "change password for $1 failed"
fi


修改远程主机上用户密码:
1、交互配置远程用户:
echo | ssh -l root passwd --stdin

如:
echo "newpass" | ssh -l root 10.11.103.151 passwd --stdin dewang
root@10.11.103.151's password: 
Changing password for user dewang.
passwd: all authentication tokens updated successfully.


echo : | ssh -l root chpasswd 2>&1


将:对先写到一文件passwd.tmp中,然后执行
chpasswd < passwd.tmp [作者未测试]

ssh -l root 
.... 交互输入root密码
然后执行以上的所有可用方式均可

2、非交互配置远程用户:
则需要用到expect来进行处理,通过ssh登录到远程机器,然后结合上述配置方式,以完成自动修改用户密码。
#!/usr/bin/expect
#@brief to change user password by ssh remote machine

proc usage {funcname} {
    puts "Usage: "
    puts "    $funcname -user "
    puts "    $funcname -root "
}   

# check param
if { $argc != 5 } {
    usage $argv0 
    exit 1
}

# get param
set host [lindex $argv 0]
set username [lindex $argv 1]
set newpasswd [lindex $argv 2]
set loginname "root"
if { [string compare [lindex $argv 3] "-user"] == 0 } {
    set loginname $username
}
set passwd [lindex $argv 4]
puts "$host $username $newpasswd $loginname $passwd"

spawn ssh -l $loginname $host
expect {
"*(yes/no)*" { send "yes\r"; set sshkey 1 }
"*assword:*" { send "$passwd\r"; set sshkey 0 }
if sshkey == 1 {
    expect "*password:*"
    send "$passwd\r"
}
}
expect "*#"

if { [string compare $loginname "root"] == 0 } {
    #send "echo \"$username:$newpasswd\" | chpasswd\r"
    send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"
} else {
    send "passwd\r"
    expect {
    "*current*assword:" {send "$passwd\r"}
    "passwd: Authentication token manipulation error" {exit}
    }
    expect "New*assword:"
    send "$newpasswd\r"
    expect "Retype*assword:"
    send "$newpasswd\r"
}
expect "*#"
send "exit\r"
#interact 是否将交互权接过来,如果接过来,则用户这时可进行交互操作


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值