powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Ubuntu:
16 сообщений из 16, страница 1 из 1
Ubuntu:
    #39528877
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю на c# небольшого терминального клиента, который сможет коннектиться к линксу, типа putty
При попытке коннекта получил ошибку

SSH Tunnel: Server does not support diffie-hellman-group1-sha1 for keyexchange

Сделал так, как написано здесь:
https://www.digitalocean.com/community/questions/server-does-not-support-diffie-hellman-group1-sha1-for-keyexchange

авторEnable the correct Kex:
sudo nano /etc/ssh/sshd_config
append with these lines to ensure correct digest:

KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr


Я сделал, клиент коннектится.

Вопрос: на случай если у меня нет доступа к Убунту и я не смогу добавить строки - какой алгоритм исопльзуется по умолчанию и какой надо исопльзовать в приложении, чтобы сработал коннект без вмешательства в удаленную систему?
...
Рейтинг: 0 / 0
Ubuntu:
    #39528904
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинДелаю на c# небольшого терминального клиента, который сможет коннектиться к линксу, типа putty
При попытке коннекта получил ошибку

SSH Tunnel: Server does not support diffie-hellman-group1-sha1 for keyexchange

Сделал так, как написано здесь:
https://www.digitalocean.com/community/questions/server-does-not-support-diffie-hellman-group1-sha1-for-keyexchange

авторEnable the correct Kex:
sudo nano /etc/ssh/sshd_config
append with these lines to ensure correct digest:

KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr


Я сделал, клиент коннектится.

Вопрос: на случай если у меня нет доступа к Убунту и я не смогу добавить строки - какой алгоритм исопльзуется по умолчанию и какой надо исопльзовать в приложении, чтобы сработал коннект без вмешательства в удаленную систему?

сделай на сервере без твоей добавки легаси
Код: bash
sudo sshd -T | grep kex

и имплементируй один из них у себя в клиенте
...
Рейтинг: 0 / 0
Ubuntu:
    #39528915
Ролг Хупин,

Кусок кода, который не хочет подключаться, показать стесняешься?
...
Рейтинг: 0 / 0
Ubuntu:
    #39528937
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимопроходилтреднечиталРолг Хупин,

Кусок кода, который не хочет подключаться, показать стесняешься?

да какое там стеснение

Нашел старый проект, с которого копирую здесь:
https://www.codeproject.com/Articles/13422/Terminal-Control-Project-C-VT-SSH-Telnet

Вот коннект

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
public void Connect ()
		{
			switch (this.ConnectionType)
			{
				case ConnectionTypes.Telnet:
				{
					this.ConnectTelnet(this.Hostname);
					break;
				}
				case ConnectionTypes.SSH1:
				{
					break;
				}
				case ConnectionTypes.SSH2:
				{
					this.ConnectSSH2(this.Hostname, this.Username, this.Password);
					break;
				}
				default:
				{
					break;
				}
			}
		}
////...

private void ConnectSSH2(string hostname, string username, string password)
		{
			// connect ssh
			this.Focus();
			Routrek.SSHC.SSHConnection _conn;
			Routrek.SSHC.SSHConnectionParameter f = new Routrek.SSHC.SSHConnectionParameter();
			f.UserName = username;
			f.Password = password;
			f.Protocol = Routrek.SSHC.SSHProtocol.SSH2;
			
			f.AuthenticationType = Routrek.SSHC.AuthenticationType.Password;
			f.WindowSize = 0x1000;
			this.reader = new Reader(this);
			Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
			//s.Blocking = false;
			IPAddress ip;
			try
			{
				ip = Dns.GetHostByName(hostname).AddressList[0];
			}
			catch
			{
				MessageBox.Show("Unable to resolve HostName");
				return;
			}

			//s.Connect(new IPEndPoint(IPAddress.Parse("0.0.0.0"), 22));
			s.Connect(new IPEndPoint(ip, 22));
			_conn = Routrek.SSHC.SSHConnection.Connect(f, reader, s);
			reader._conn = _conn;
			Routrek.SSHC.SSHChannel ch = _conn.OpenShell(reader);
			reader._pf = ch;
			Routrek.SSHC.SSHConnectionInfo ci = _conn.ConnectionInfo;
		}
...
Рейтинг: 0 / 0
Ubuntu:
    #39528939
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCcРолг ХупинДелаю на c# небольшого терминального клиента, который сможет коннектиться к линксу, типа putty
При попытке коннекта получил ошибку

SSH Tunnel: Server does not support diffie-hellman-group1-sha1 for keyexchange

Сделал так, как написано здесь:
https://www.digitalocean.com/community/questions/server-does-not-support-diffie-hellman-group1-sha1-for-keyexchange

пропущено...


Я сделал, клиент коннектится.

Вопрос: на случай если у меня нет доступа к Убунту и я не смогу добавить строки - какой алгоритм исопльзуется по умолчанию и какой надо исопльзовать в приложении, чтобы сработал коннект без вмешательства в удаленную систему?

сделай на сервере без твоей добавки легаси
Код: bash
sudo sshd -T | grep kex

и имплементируй один из них у себя в клиенте

Эта команда выдает именно тот список, который я добавил в файл (см. первое сообщение)
...
Рейтинг: 0 / 0
Ubuntu:
    #39528942
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот еще кусок кода

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public static Cipher CreateCipher(SSHProtocol protocol, CipherAlgorithm algorithm, byte[] key) {
			if(protocol==SSHProtocol.SSH1) {
				switch(algorithm) {
					case CipherAlgorithm.TripleDES:
						return new TripleDESCipher1(key);
					case CipherAlgorithm.Blowfish:
						return new BlowfishCipher1(key);
					default:
						throw new SSHException("unknown algorithm " + algorithm);
				}
			}
			else {
				switch(algorithm) {
					case CipherAlgorithm.TripleDES:
						return new TripleDESCipher2(key);
					case CipherAlgorithm.Blowfish:
						return new BlowfishCipher2(key);
					default:
						throw new SSHException("unknown algorithm " + algorithm);
				}
			}
		}
...
Рейтинг: 0 / 0
Ubuntu:
    #39528964
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это шифрование траффика. А у тебя проблема в PEX.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ubuntu:
    #39528974
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинOoCcпропущено...


сделай на сервере без твоей добавки легаси
Код: bash
sudo sshd -T | grep kex

и имплементируй один из них у себя в клиенте

Эта команда выдает именно тот список, который я добавил в файл (см. первое сообщение)
...
Рейтинг: 0 / 0
Ubuntu:
    #39528977
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCcРолг Хупинпропущено...


Эта команда выдает именно тот список, который я добавил в файл (см. первое сообщение)

убрал добавленные строки, рестартовал сервис, выполнил команду

sudo sshd -T | grep kex

kexalgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
...
Рейтинг: 0 / 0
Ubuntu:
    #39528981
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинOoCcпропущено...


убрал добавленные строки, рестартовал сервис, выполнил команду

sudo sshd -T | grep kex

kexalgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
перед соединением сконфигурируй свой SSH клиент с одним из этих алгоритмов обмена ключами. И ничего добавлять в сервер будет не нужно.
...
Рейтинг: 0 / 0
Ubuntu:
    #39528984
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCcРолг Хупинпропущено...


убрал добавленные строки, рестартовал сервис, выполнил команду

sudo sshd -T | grep kex

kexalgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
перед соединением сконфигурируй свой SSH клиент с одним из этих алгоритмов обмена ключами. И ничего добавлять в сервер будет не нужно.

Да, вот в подтверждение нашел:

На вызове:
CheckAlgorithmSupport("keyexchange", kex, "diffie-hellman-group1-sha1");

передается строка, полученна от сервера

kex = "curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1"
и вылетает ошибка.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
private void ProcessKEXINIT(SSH2Packet packet) {
			_serverKEXINITPayload = packet.Data;
			SSH2DataReader re = new SSH2DataReader(_serverKEXINITPayload);
			byte[] head = re.Read(17); //Type and cookie
			if(head[0]!=(byte)PacketType.SSH_MSG_KEXINIT) throw new SSHException(String.Format("Server response is not SSH_MSG_KEXINIT but {0}", head[0]));
			Encoding enc = Encoding.ASCII;
			
			string kex = enc.GetString(re.ReadString());
			_cInfo._supportedKEXAlgorithms = kex;
			CheckAlgorithmSupport("keyexchange", kex, "diffie-hellman-group1-sha1");
			
			string host_key = enc.GetString(re.ReadString());
			_cInfo._supportedHostKeyAlgorithms = host_key;
			_cInfo._algorithmForHostKeyVerification = DecideHostKeyAlgorithm(host_key);
			
			string enc_cs = enc.GetString(re.ReadString());
			_cInfo._supportedCipherAlgorithms = enc_cs;
			_cInfo._algorithmForTransmittion = DecideCipherAlgorithm(enc_cs);
			
			string enc_sc = enc.GetString(re.ReadString());
			_cInfo._algorithmForReception = DecideCipherAlgorithm(enc_sc);

			string mac_cs = enc.GetString(re.ReadString());
			CheckAlgorithmSupport("mac", mac_cs, "hmac-sha1");
			
			string mac_sc = enc.GetString(re.ReadString());
			CheckAlgorithmSupport("mac", mac_sc, "hmac-sha1");
			
			string comp_cs = enc.GetString(re.ReadString());
			CheckAlgorithmSupport("compression", comp_cs, "none");
			string comp_sc = enc.GetString(re.ReadString());
			CheckAlgorithmSupport("compression", comp_sc, "none");
			
			string lang_cs = enc.GetString(re.ReadString());
			string lang_sc = enc.GetString(re.ReadString());
			bool flag = re.ReadBool();
			int reserved = re.ReadInt32();
			Debug.Assert(re.Rest==0);
			if(flag) throw new SSHException("Algorithm negotiation failed"); 
		}
...
Рейтинг: 0 / 0
Ubuntu:
    #39528985
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проясняется, получается, что эта приблуда умеет использовать только "diffie-hellman-group1-sha1"

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
private void SendKEXINIT() {
			SSH2DataWriter wr = new SSH2DataWriter();
			wr.WritePacketType(PacketType.SSH_MSG_KEXINIT);
			byte[] cookie = new byte[16];
			_param.Random.NextBytes(cookie);
			wr.Write(cookie);
			wr.Write("diffie-hellman-group1-sha1"); //    kex_algorithms
			wr.Write(FormatHostKeyAlgorithmDescription());            //    server_host_key_algorithms
			wr.Write(FormatCipherAlgorithmDescription());      //    encryption_algorithms_client_to_server
			wr.Write(FormatCipherAlgorithmDescription());      //    encryption_algorithms_server_to_client
			wr.Write("hmac-sha1");                  //    mac_algorithms_client_to_server
			wr.Write("hmac-sha1");                  //    mac_algorithms_server_to_client
			wr.Write("none");                       //    compression_algorithms_client_to_server
			wr.Write("none");                       //    compression_algorithms_server_to_client
			wr.Write("");                           //    languages_client_to_server
			wr.Write("");                           //    languages_server_to_client
			wr.Write(false); //Indicates whether a guessed key exchange packet follows
			wr.Write(0);       //reserved for future extension

			_clientKEXINITPayload = wr.ToByteArray();
			_status = Status.WAIT_KEXINIT;
			TransmitPacket(_clientKEXINITPayload);
		}
...
Рейтинг: 0 / 0
Ubuntu:
    #39528994
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"приблуда" это кто? Ролг Хупин? Это чей код?

ИМХО собственно клиент может быть сделан на OpenSSL/OpenSSH и поддерживать много чего.
...
Рейтинг: 0 / 0
Ubuntu:
    #39528999
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCc"приблуда" это кто? Ролг Хупин? Это чей код?

ИМХО собственно клиент может быть сделан на OpenSSL/OpenSSH и поддерживать много чего.

не, приблуда - это то, что я пытаюсь адаптировать
...
Рейтинг: 0 / 0
Ubuntu:
    #39529018
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCcРолг Хупинпропущено...


убрал добавленные строки, рестартовал сервис, выполнил команду

sudo sshd -T | grep kex

kexalgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
перед соединением сконфигурируй свой SSH клиент с одним из этих алгоритмов обмена ключами. И ничего добавлять в сервер будет не нужно.


Дописал в клиент diffie-hellman-group14-sha1, это проходит, но не проходит шифрование
Сервер отвечает, что поддерживает aes-128-ctr, а на клиенте aes-128-cbc.

Надо тоже дописать похоже..
...
Рейтинг: 0 / 0
Ubuntu:
    #39530756
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинПроясняется, получается, что эта приблуда умеет использовать только "diffie-hellman-group1-sha1"

Поэтому в perl и сделали специальный модуль, который запускает бинарник openssh
Никогда еще не было проблем с ним.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Ubuntu:
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]