1、服务器配置
命令 ssh-keygen
-m key_format 指定秘钥格式
#!/bin/bash
ssh-keygen -m PEM -t rsa
cd .ssh
cat id_rsa.pub > authorized_keys
cd ..
chmod 700 .ssh
cd .ssh
chmod 600 authorized_keys
2、利用xshell生成本地共私钥文件
这里可以输入自定义登入密码或者不输入
可以将公钥保存为pub文件以备后续使用
将私钥文件导出,以便后续调用
3、Xshell配置校本化生成
将一下内容保存为template.xsh
[CONNECTION:PROXY]
Proxy=
StartUp=0
[CONNECTION:SERIAL]
BaudRate=6
StopBits=0
FlowCtrl=0
Parity=0
DataBits=3
ComPort=0
[SessionInfo]
Version=5.2
Description=Xshell session file
[TRACE]
SockConn=1
SshLogin=0
SshTunneling=0
TelnetOptNego=0
[CONNECTION:SSH]
LaunchAuthAgent=1
KeyExchange=
ForwardToXmanager=1
Compression=0
KeyExchangeList=ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
NoTerminal=0
CipherList=aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes256-cbc,rijndael128-cbc,rijndael192-cbc,rijndael256-cbc,aes256-ctr,aes192-ctr,aes128-ctr,rijndael-cbc@lysator.liu.se,arcfour128,arcfour256
UseAuthAgent=0
MAC=
InitRemoteDirectory=
ForwardX11=0
VexMode=0
Cipher=
Display=localhost:0.0
FwdReqCount=0
InitLocalDirectory=
MACList=hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-etm@openssh.com,hmac-md5-96-etm@openssh.com
[USERINTERFACE]
NoQuickButton=0
QuickCommand=
[CONNECTION:FTP]
Passive=1
InitRemoteDirectory=
InitLocalDirectory=
[TRANSFER]
FolderMethod=0
DropXferHandler=2
XmodemUploadCmd=rx
ZmodemUploadCmd=rz -E
FolderPath=
YmodemUploadCmd=rb -E
AutoZmodem=1
SendFolderPath=
DuplMethod=0
XYMODEM_1K=0
[CONNECTION]
PasteDelay=0
Port=22
Host=10.4.37.117
Protocol=SSH
AutoReconnect=0
AutoReconnectLimit=0
Description=
AutoReconnectInterval=30
FtpPort=21
UseNaglesAlgorithm=0
IPV=0
[TERMINAL]
Rows=24
CtrlAltIsAltGr=1
InitOriginMode=0
InitReverseMode=0
DisableBlinkingText=0
CodePage=65001
InitAutoWrapMode=1
Cols=80
InitEchoMode=0
Type=xterm
DisableAlternateScreen=0
CJKAmbiAsWide=0
ScrollBottomOnKeyPress=0
DisableTitleChange=0
ForceEraseOnDEL=0
InitInsertMode=0
ShiftForcesLocalUseOfMouse=1
FontLineCharacter=1
ScrollbackSize=1024
InitCursorMode=0
BackspaceSends=2
UseInitSize=0
UseLAltAsMeta=0
UseRAltAsMeta=0
AltKeyMapPath=
DeleteSends=0
DisableTermPrinting=0
IgnoreResizeRequest=1
ScrollBottomOnTermOutput=1
FontPowerLine=1
ScrollErasedText=1
KeyMap=0
RecvLLAsCRLF=0
EraseWithBackgroundColor=1
InitNewlineMode=0
InitKeypadMode=0
TerminalNameForEcho=Xshell
[TERMINAL:WINDOW]
ColorScheme=XTerm
LineSpace=0
CursorColor=65280
CursorBlinkInterval=600
TabColorType=0
CursorAppearance=0
TabColorOther=0
FontSize=10
CursorBlink=0
BoldMethod=2
CursorTextColor=0
FontFace=Courier New
CharSpace=0
MarginBottom=5
MarginLeft=5
MarginTop=5
MarginRight=5
[CONNECTION:TELNET]
XdispLoc=1
NegoMode=0
Display=$PCADDR:0.0
[CONNECTION:AUTHENTICATION]
Library=0
Passphrase=
Delegation=0
UseInitScript=0
TelnetLoginPrompt=ogin:
Password=
RloginPasswordPrompt=assword:
UseExpectSend=0
TelnetPasswordPrompt=assword:
ExpectSend_Count=0
Method=1
ScriptPath=
UserKey=id_rsa_2048
UserName=root
[LOGGING]
FilePath=%n_%Y-%m-%d_%t.log
Overwrite=1
TermCode=0
AutoStart=0
Timestamp=0
Prompt=0
[CONNECTION:RLOGIN]
TermSpeed=38400
[CONNECTION:KEEPALIVE]
SendKeepAliveInterval=60
KeepAliveInterval=60
TCPKeepAlive=0
KeepAliveString=
SendKeepAlive=0
KeepAlive=1
新建python文件,拷贝以下代码,运行createXsh(...)生成想要的xsh文件,将生成的.xsh文件放到Xshell的sessions指定目录下面即可打开
def createXsh(sName, sProtocol, sHost, sPort, sUserName, sMethod, sPassword, sUserKey):
"""
根据参数生成单个Xsh文件
:param sName: 文件名
:param sProtocol: 协议类型 TELNET、SSH
:param sHost: IP地址
:param sPort: 端口 22、23
:param sUserName: 用户
:param sPassword: 密码 Method=0
:param sUserKey: 密钥文件名 Method=1
:return:
"""
tpfile = os.path.join(os.getcwd(), "template.xsh")
tarfile = os.path.join(os.getcwd(), sName + ".xsh")
lines = []
with open(tpfile, 'r', encoding='utf-8') as tpf:
for l in tpf.readlines():
if l.split('=')[0] in ['Protocol', 'Host', 'Port', 'Password', 'Method', 'UserKey', 'UserName']:
spl = l.split('=')[0] + "=" + eval("s" + l.split('=')[0]) + "\n"
lines.append(spl)
else:
lines.append(l)
with open(tarfile, 'w', encoding='utf-8') as tarf:
tarf.writelines(lines)
pass
4、将生成的公钥添加到服务器免密登入授权文件中去
echo "公钥内容" >> .ssh/authorized_keys