工作中要用到ssh-keygen生成的公鑰和私鑰,查了很多**,大部分人用的是crypto.publickey包中的rsa類來模擬ssh-keygen生成秘鑰對。偶然間發現paramiko也有乙個可以用來生成秘鑰對的類(paramiko.rsakey.
rsakey
),最後選擇用paramiko的rsakey來生成秘鑰對。關於paramiko生成不同加密方式的秘鑰對的詳細資訊,請到官網上看
def gen_keys(key=""):
"""生成公鑰 私鑰
"""output = stringio.stringio()
sbuffer = stringio.stringio()
key_content = {}
if not key:
try:
key = rsakey.generate(2048)
key.write_private_key(output)
private_key = output.getvalue()
except ioerror:
raise ioerror('gen_keys: there was an error writing to the file')
except sshexception:
raise sshexception('gen_keys: the key is invalid')
else:
private_key = key
output.write(key)
try:
key = rsakey.from_private_key(output)
except sshexception, e:
raise sshexception(e)
for data in [key.get_name(),
" ",
key.get_base64(),
" %s@%s" % ("magicstack", os.uname()[1])]:
sbuffer.write(data)
public_key = sbuffer.getvalue()
key_content['public_key'] = public_key
key_content['private_key'] = private_key
logger.info('gen_keys: key content:%s'%key_content)
return key_content
我最後是把公鑰和私鑰放在了乙個字典裡,你也可以根據需要生成檔案,這個類還是很方便的 附錄 生成SSH秘鑰
附錄 生成ssh秘鑰 ssh是建立在應用層和傳輸層基礎上的安全協議,其目的是專為遠端登入會話和其他網路服務提供安全性的保障,用過ssh遠端登入的人都比較熟悉,可以認為ssh是一種安全的shell。http登入是需要使用者名稱和密碼的,要實現無密碼登入,就需要建立ssh 金鑰 ssh key ssh ...
git生成SSH秘鑰
進入git bash 輸入cd ssh 沒有的話,自己建立mkdir ssh,然後進入該資料夾完成生成秘鑰步驟 配置全域性的name和email,這裡是的你github或者bitbucket的name和email git config global user.name xkwg git config...
SSH秘鑰對登入
這裡的ssh秘鑰對登入是在linux中配置hadoop時用到的,為了使各個伺服器之間能夠無密碼的相互通訊,但同樣也可用在兩台linux之間的相互通訊,也可用在伺服器管理人員無密碼遠端登入伺服器,這樣做既安全又方便。這裡把兩台伺服器作為實驗物件,一台成為ssh客戶機,一台成為ssh伺服器 大致流程是先...