openssh密钥转rsa密钥

openssh密钥转rsa密钥)

引言

在使用c#代码连接服务器时,服务器设置的使用openSSH密钥证书,在打开密钥文件报错”openssh key type: ssh-rsa is not supported “,于是先查找了如何打开openssh密钥文件,很多答案说Renci.SshNet, Version=2020.0.2.0,版本的就支持,但真实情况是这个版本的也不支持。

于是就尝试将openssh key 转为rsa key,也就是将-----BEGIN OPENSSH PRIVATE KEY----- 开头的格式的密钥转换成-----BEGIN RSA PRIVATE KEY----- 格式,这里就记录一下转换过程,以及遇到的问题 。

转换过程

第一步:下载安装putty (putty下载
第二步:打开PUTTYgen,见下图,通过Conversations-》Import Key导入原openssh 密钥
在这里插入图片描述
第三步:通过Conversations-》Export OPENSSH KEY 导出成RSA格式,界面参数全部默认就行

这样就把-----BEGIN OPENSSH PRIVATE KEY----- 格式的密钥转换成-----BEGIN RSA PRIVATE KEY----- 格式 的密钥了

OPENSSH格式密钥内容
RSA格式密钥内容

转换代码

这里再附上C#使用sftp方式上传数据代码

        public void  SFTPUpload(string privateKeyPath)
        {
            try
            {
            string serverIp="1.1.1.1";//举例
            string serverPort="22";
            string serverUsername="root";
           		 string localfilepath="F:\testdata\www.db";
           		 string ObjectFilePath="opt/data/www.db";
                // 创建 ConnectionInfo 
                var keyFiles = new[] { new PrivateKeyFile(privateKeyPath) };
                var keyAuthMethod =new PrivateKeyAuthenticationMethod(serverUsername, keyFiles);
                var connectionInfo = new ConnectionInfo(serverIp , serverUsername, keyAuthMethod);  
                sftp = new SftpClient(connectionInfo);
                sftp.ConnectionInfo.Encoding = Encoding.UTF8;
                sftp.ConnectionInfo.MaxSessions = 2000;  
            	 sftp.Connect(); 
    
                if (isConnect)
                {
                    TransferFileModel fileitem = fileModels[0];                
                    // 获取用户主目录
                     // string userHomeDir = sftpHelper.sftp.WorkingDirectory;
                    // 返回到上一级目录
                    //  sftpHelper.sftp.ChangeDirectory("..");
                    string dir = System.IO.Path.GetDirectoryName(ObjectFilePath);
                    if (!sftp.Exists(dir))
                    {
                        sftp.CreateDirectory(dir);
                    }
                    bool fileExist = sftp.Exists(ObjectFilePath);
                    if(fileExist)
					{
                        sftpHelper.Disconnect();
                        MessageBox.Show("目标路径已存在该文件:" + System.IO.Path.GetFileName(ObjectFilePath+",请核实处理后再上传!")); 
                    }
					else
					{                                       
                       using (var fileStream = new FileStream(localfilepath, FileMode.Open))
		                {
		                    await sftp.UploadAsync(fileStream, ObjectFilePath, true, UpdateProgresBar);
		                    MyCurrentSize = MyCurrentSumSize;
		                }
                        sftp.Disconnect();
                    }     
                }
            }
            catch (Exception ex)
            {
          
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值