# Future of the (deprecated) paramiko connection plugin

**URL:** <https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376>\
**Category:** Project Discussions\
**Tags:** paramiko, community-general, network, ansible-core\
**Created:** [February 22, 2026, 11:31am UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376 "2026-02-22T11:31:48Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [February 22, 2026, 11:31am UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/1 "2026-02-22T11:31:49Z")

</div>

The paramiko connection plugin (which has been part of Ansible since version 0.1 apparently) [has been deprecated in ansible-core 2.19](https://github.com/ansible/ansible/commit/9bed0413ec0a29258d24dcf89290c649913ad97a), but apparently [without any indication in the documentation and no runtime warning when someone uses the plugin](https://github.com/ansible/ansible/pull/86258), and also no mention in the [porting guide](https://docs.ansible.com/projects/ansible/devel/porting_guides/porting_guide_core_2.19.html). (So basically if you didn’t read about it in the changelog, you can’t know about it, even if you use it.) (If you’re interested in _why_ it’s deprecated, see [issue #83757 in ansible/ansible](https://github.com/ansible/ansible/issues/83757).)

(I think the lack of properly communicating the deprecation is a big problem and thus the deprecation should be moved to a later version, but that shouldn’t be the topic of this discussion.)

Recently @shertel created a [PR in community.general](https://github.com/ansible-collections/community.general/pull/11293) to add the connection plugin there. After some time, there apparently was a discussion of the networking team taking over the plugin, and thus the PR was closed. But then [it turned out that the networking team only wants to keep a subset of it for the `network_cli` connection plugin](https://github.com/ansible-collections/community.general/pull/11293#issuecomment-3921421224), so the future of the general `paramiko_ssh` plugin is open again. Right now it will be removed from ansible-core without any replacement.

So I guess the big question is: does anyone still _use_ this plugin? I’m happy to get it included in community.general and trying to (help to) keep it alive, but I’m not sure whether it’s still needed. (And since its users might not have even noticed that it will be removed, it’s quite possible that there is a larger user-base who didn’t speak up so far because they simply don’t know that it will get removed.)

---

<div class="post-metadata">

**Author:** ![mariolenz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mariolenz/32/108_2.png) [@mariolenz](https://forum.ansible.com/u/mariolenz)\
**Post date:** [February 22, 2026, 2:40pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/2 "2026-02-22T14:40:42Z")

</div>

There’s also the ssh connection plugin. I don’t use or even know about both plugins. They look somewhat redundant to me. So it would be interesting to know what’s possible with the paramiko plugin that can’t be done with the ssh one.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [February 22, 2026, 3:13pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/3 "2026-02-22T15:13:42Z")

</div>

Some history can be found here. I picked the Ansible 5 docs because the old texts were still there (they likely were already no longer accurate by then).

- [Glossary — Ansible Documentation](https://docs.ansible.com/projects/ansible/5/reference_appendices/glossary.html#term-paramiko)
- [Developing plugins — Ansible Documentation](https://docs.ansible.com/projects/ansible/5/dev_guide/developing_plugins.html#connection-plugins)
- [Contradictions in documentation about `paramiko` being the default · Issue #1042 · ansible/ansible-documentation · GitHub](https://github.com/ansible/ansible-documentation/issues/1042)

I don’t remember much about all these, but my guess is that once SSH with `ControlPersist` became pretty much standard everywhere there wasn’t that much use for the other SSH connection plugins than `ssh` anymore, except maybe for some special circumstances. I have no idea what these special circumstances can be, which is part of why I opened this thread 😉 If there are none, I guess there’s no need to keep the plugin alive.

---

<div class="post-metadata">

**Author:** ![bcoca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bcoca/32/9269_2.png) [@bcoca](https://forum.ansible.com/u/bcoca)\
**Post date:** [February 22, 2026, 9:56pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/4 "2026-02-22T21:56:24Z")

</div>

The special circumstances were normally related to ssh daemons that were incompatible with OpenSSH, which was mostly old Solaris and old network appliances.

---

<div class="post-metadata">

**Author:** ![KB-perByte](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kb-perbyte/32/541_2.png) [@KB-perByte](https://forum.ansible.com/u/KB-perByte)\
**Post date:** [February 24, 2026, 1:58pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/5 "2026-02-24T13:58:32Z")

</div>

@mariolenz for network operations we need the capabilities to manage prompts, interaactive states of the network appliance and paging at times. A persistent session is needed to detect different applaince specific prompts and responses of sequential command execution for all these operations over a ptty paramiko or the ansible-pylibssh is needed.

And while we are pushing network automation users to migrate to libssh over paramiko, we still have folks who are working with legacy appliances that still support weaker algorithms. Keeping community interest in mind, we started working on keeping paramiko as a connection option via `ansible_network_cli_ssh_type` for 2 years in ansible.netcommon PR - [paramiko implicit stay in netcommon, impacts ansible-core 2.21 by KB-perByte · Pull Request #752 · ansible-collections/ansible.netcommon · GitHub](https://github.com/ansible-collections/ansible.netcommon/pull/752) after core drops it after 2.21

---

<div class="post-metadata">

**Author:** ![bcoca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bcoca/32/9269_2.png) [@bcoca](https://forum.ansible.com/u/bcoca)\
**Post date:** [February 24, 2026, 3:45pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/6 "2026-02-24T15:45:26Z")

</div>

If I am reading this correctly you are just adding the paramiko plugin as an internal class into network\_cli, this would not allow it to be normally used for anything outside network\_cli, would it make sense to just migrate the existing plugin to c.general for other uses?

---

<div class="post-metadata">

**Author:** ![KB-perByte](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kb-perbyte/32/541_2.png) [@KB-perByte](https://forum.ansible.com/u/KB-perByte)\
**Post date:** [February 25, 2026, 4:26am UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/7 "2026-02-25T04:26:24Z")

</div>

@bcoca, that is correct, we are keeping it just to network\_cli, and we don’t want to advertise it as an individual connection plugin, it stays as a ssh\_type options without paramiko having a connection plugin significance. Everything is dealt within network\_cli and from a user pov there is no change in usage.

If the existing plugin is moved to community.gen as of this [https://github.com/ansible-collections/community.general/pull/11293](https://github.com/ansible-collections/community.general/pull/11293) we can obviously do that if the larger community has it’s requrienment. But if we need to deal with paramiko just for covering network-specific users, I think it’s better off in netcommon. Which would stay with us for 2 years, and we are marking it deprecated / last resort option right when we are adding it.

I am happy to discuss more about the whereabouts of paramiko, to have a controlled impact on community.

---

<div class="post-metadata">

**Author:** ![shertel](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/shertel/32/1241_2.png) [@shertel](https://forum.ansible.com/u/shertel)\
**Post date:** [February 25, 2026, 2:20pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/8 "2026-02-25T14:20:00Z")

</div>

From my perspective community.general shouldn’t bother maintaining a separate implementation for ancient networking devices. I was excited to hear the networking team planned to “take ownership” of the plugin before that turned out to not be the case, because it seemed like a _much_ better fit than relying on community.general keeping a niche networking-related use case working. I’m sad for the users who will need to rewrite their content though - seems easily avoidable.

---

<div class="post-metadata">

**Author:** ![ganeshrn](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/ganeshrn/32/1021_2.png) [@ganeshrn](https://forum.ansible.com/u/ganeshrn)\
**Post date:** [February 25, 2026, 3:13pm UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/9 "2026-02-25T15:13:26Z")

</div>

For the networking collection, the default `ssh_type` is already set to **libssh** , and it has been the recommended transport for some time. On the networking side, we don’t expect users to rewrite any of their content.

Our goal is to achieve **feature parity** between the **libssh** and **paramiko** transport types within the scope of **ansible.netcommon.network\_cli** connection plugin. We’re actively working to fix the known community reported issues where scenarios work with `ssh_type=paramiko` but not with `ssh_type=libssh`, specifically in the context of the `network_cli` connection plugin.

The networking team has been planning to deprecate `ssh_type=paramiko` for a while, and that effort has been **expedited** now that the plugin will been moved out of `ansible-core` soon.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 13, 2026, 6:49am UTC](https://forum.ansible.com/t/future-of-the-deprecated-paramiko-connection-plugin/45376/10 "2026-03-13T06:49:12Z")

</div>

[[stable-2.20] Document paramiko\_ssh deprecation by s-hertel · Pull Request #86258 · ansible/ansible · GitHub](https://github.com/ansible/ansible/pull/86258) has now been merged, so the 2.20.4 release will show a deprecation warning to users of the plugin.
