เว็บแอปพลิเคชันง่ายๆ ที่ใช้เป็นไคลเอนต์ ssh เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ ssh ของคุณ เขียนด้วยภาษา Python โดยมีพื้นฐานมาจาก Tornado, Paramiko และ xterm.js
+---------+ http +--------+ ssh +-----------+
| browser | <==========> | webssh | <=======> | ssh server|
+---------+ websocket +--------+ ssh +-----------+
pip install webssh
wssh
127.0.0.1:8888
# start a http server with specified listen address and listen port
wssh --address= ' 2.2.2.2 ' --port=8000
# start a https server, certfile and keyfile must be passed
wssh --certfile= ' /path/to/cert.crt ' --keyfile= ' /path/to/cert.key '
# missing host key policy
wssh --policy=reject
# logging level
wssh --logging=debug
# log to file
wssh --log-file-prefix=main.log
# more options
wssh --help
// connect to your ssh server
wssh . connect ( hostname , port , username , password , privatekey , passphrase , totp ) ;
// pass an object to wssh.connect
var opts = {
hostname : 'hostname' ,
port : 'port' ,
username : 'username' ,
password : 'password' ,
privatekey : 'the private key text' ,
passphrase : 'passphrase' ,
totp : 'totp'
} ;
wssh . connect ( opts ) ;
// without an argument, wssh will use the form data to connect
wssh . connect ( ) ;
// set a new encoding for client to use
wssh . set_encoding ( encoding ) ;
// reset encoding to use the default one
wssh . reset_encoding ( ) ;
// send a command to the server
wssh . send ( 'ls -l' ) ;
หากต้องการใช้แบบอักษรที่กำหนดเอง ให้วางไฟล์แบบอักษรของคุณในไดเร็กทอรี webssh/static/css/fonts/
แล้วรีสตาร์ทเซิร์ฟเวอร์
รองรับการส่งอาร์กิวเมนต์ตาม url (แบบสอบถามหรือส่วนย่อย) เช่นตัวอย่างต่อไปนี้:
การส่งผ่านข้อมูลแบบฟอร์ม (รหัสผ่านต้องเข้ารหัสใน base64 ไม่รองรับคีย์ส่วนตัว)
http://localhost:8888/ ? hostname=xx & username=yy & password=str_base64_encoded
การส่งผ่านสีพื้นหลังของเทอร์มินัล
http://localhost:8888/ # bgcolor=green
การส่งผ่านสีแบบอักษรของเทอร์มินัล
http://localhost:8888/ # fontcolor=red
ผ่านชื่อที่ผู้ใช้กำหนด
http://localhost:8888/ ? title=my-ssh-server
ผ่านการเข้ารหัส
http://localhost:8888/ # encoding=gbk
การส่งผ่านขนาดตัวอักษร
http://localhost:8888/ # fontsize=24
ส่งคำสั่งที่ดำเนินการทันทีหลังจากเข้าสู่ระบบ
http://localhost:8888/ ? command=pwd
ผ่านประเภทเทอร์มินัล
http://localhost:8888/ ? term=xterm-256color
เริ่มต้นแอป
docker-compose up
รื้อแอปออก
docker-compose down
ความต้องการ
pip install pytest pytest-cov codecov flake8 mock
ใช้ unittest เพื่อทำการทดสอบทั้งหมด
python -m unittest discover tests
ใช้ pytest เพื่อทำการทดสอบทั้งหมด
python -m pytest tests
ทำงานอยู่ด้านหลังเซิร์ฟเวอร์ Nginx
wssh --address= ' 127.0.0.1 ' --port=8888 --policy=reject
# Nginx config example
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1 ;
proxy_read_timeout 300 ;
proxy_set_header Upgrade $http_upgrade ;
proxy_set_header Connection "upgrade" ;
proxy_set_header Host $http_host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Real-PORT $remote_port ;
}
ทำงานเป็นเซิร์ฟเวอร์แบบสแตนด์อโลน
wssh --port=8080 --sslport=4433 --certfile= ' cert.crt ' --keyfile= ' cert.key ' --xheaders=False --policy=reject